parent
a164b574b4
commit
6a35d6fe03
@ -1,127 +1,89 @@
|
||||
#include <Arduino.h>
|
||||
#include "WS2812.h"
|
||||
#include "led_control.h"
|
||||
#include "KeyboardConfig.h"
|
||||
|
||||
WS2812 LED(LED_COUNT);
|
||||
cRGB value;
|
||||
byte intensity;
|
||||
byte sign;
|
||||
byte offset=0;
|
||||
WS2812 LED(LED_COUNT);
|
||||
|
||||
int led_mode;
|
||||
int last_led_mode;
|
||||
|
||||
void setup_leds() {
|
||||
LED.setOutput(LED_DATA_PIN);
|
||||
|
||||
LED.setColorOrderRGB(); // Uncomment for RGB color order
|
||||
//LED.setColorOrderBRG(); // Uncomment for BRG color order
|
||||
//LED.setColorOrderGRB(); // Uncomment for GRB color order (Default; will be used if none other is defined.)
|
||||
cRGB led_off;
|
||||
|
||||
intensity = 0;
|
||||
sign = 1;
|
||||
|
||||
cRGB led_steady;
|
||||
|
||||
}
|
||||
|
||||
void update_leds_rgb(){
|
||||
|
||||
if (1) {
|
||||
cRGB led_breathe;
|
||||
|
||||
|
||||
byte i = 0;
|
||||
if (sign) {
|
||||
intensity+=1;
|
||||
if (intensity >= 128)
|
||||
sign = 0;
|
||||
}
|
||||
else {
|
||||
intensity-=1;
|
||||
if (intensity < 5){
|
||||
sign = 1;
|
||||
offset++;}
|
||||
void setup_leds() {
|
||||
led_off.r=0;
|
||||
led_off.g=0;
|
||||
led_off.b=0;
|
||||
led_steady.r=30;
|
||||
led_steady.g=30;
|
||||
led_steady.b=30;
|
||||
LED.setOutput(LED_DATA_PIN);
|
||||
LED.setColorOrderRGB(); // Uncomment for RGB color order
|
||||
led_mode=LED_MODE_STEADY;
|
||||
}
|
||||
if (offset>2) offset=0;
|
||||
|
||||
while (i < LED_COUNT){
|
||||
|
||||
|
||||
if (((i+offset) % 3) == 0) { // First LED, and every third after that
|
||||
value.b = 0;
|
||||
value.g = 0;
|
||||
value.r = intensity; // RGB Value -> Red Only
|
||||
LED.set_crgb_at(i, value); // Set value at LED found at index 0
|
||||
}
|
||||
else if (((i+offset )% 3) == 1) { // Second LED, and every third after that
|
||||
value.b = 0;
|
||||
value.g = intensity;
|
||||
value.r = 0; // RGB Value -> Green Only
|
||||
LED.set_crgb_at(i, value); // Set value at LED found at index 0
|
||||
byte key_to_led(byte row, byte col) {
|
||||
return key_led_map[row][col];
|
||||
}
|
||||
else { // Third LED, and every third after that
|
||||
value.b = intensity;
|
||||
value.g = 0;
|
||||
value.r = 0; // RGB Value -> Blue Only
|
||||
LED.set_crgb_at(i, value); // Set value at LED found at index 0
|
||||
}
|
||||
|
||||
|
||||
i++;
|
||||
void set_key_color(byte row, byte col, cRGB color){
|
||||
LED.set_crgb_at(key_to_led(row,col),color);
|
||||
}
|
||||
|
||||
cRGB get_key_color(byte row, byte col){
|
||||
return LED.get_crgb_at(key_to_led(row,col));
|
||||
}
|
||||
|
||||
|
||||
void update_leds_rgb(){
|
||||
//LED.set_crgb_at(i, value); // Set value at LED found at index 0
|
||||
LED.sync(); // Sends the data to the LEDs
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void initialize_led_mode(int mode) {
|
||||
if (mode == LED_MODE_OFF) {
|
||||
set_all_leds_to(led_off);
|
||||
} else if (mode == LED_MODE_HEATMAP) {
|
||||
} else if (mode == LED_MODE_BREATHE) {
|
||||
|
||||
int red;
|
||||
int green;
|
||||
int blue;
|
||||
int rednext=1;
|
||||
int bluenext=1;
|
||||
int greennext=1;
|
||||
void update_leds_scroll() {
|
||||
int i=0;
|
||||
|
||||
if(red==0&& blue==0&& green==0) {
|
||||
red=random(50);
|
||||
green=random(50);
|
||||
blue=random(50);
|
||||
rednext=bluenext=greennext=1;
|
||||
} else if (mode == LED_MODE_RAINBOW) {
|
||||
} else if (mode == LED_MODE_CHASE) {
|
||||
} else if (mode == LED_MODE_STEADY) {
|
||||
set_all_leds_to(led_steady);
|
||||
}
|
||||
}
|
||||
|
||||
if (red<0) {red=0;}
|
||||
if (green<0) {green=0;}
|
||||
if(blue<0){blue=0;}
|
||||
void set_all_leds_to(cRGB color) {
|
||||
for(int i=0; i<LED_COUNT;i++) {
|
||||
LED.set_crgb_at(i,color);
|
||||
}
|
||||
|
||||
if (red+blue+green>100) {
|
||||
rednext=-1;
|
||||
bluenext=-1;
|
||||
greennext=-1;
|
||||
}
|
||||
// if (green>100) {
|
||||
// greennext=-1;
|
||||
// }
|
||||
// if (blue>100){
|
||||
// bluenext=-1;
|
||||
// }
|
||||
red+=rednext;
|
||||
green+=greennext;
|
||||
blue+=bluenext;
|
||||
|
||||
value.r=red;
|
||||
value.g=green;
|
||||
value.b=blue;
|
||||
|
||||
|
||||
while (i < LED_COUNT){
|
||||
LED.set_crgb_at(i, value); // Set value at LED found at index 0
|
||||
i++;
|
||||
void update_leds() {
|
||||
if (led_mode != last_led_mode) {
|
||||
initialize_led_mode(led_mode);
|
||||
}
|
||||
LED.sync();
|
||||
if (led_mode == LED_MODE_OFF) {
|
||||
} else if (led_mode == LED_MODE_HEATMAP) {
|
||||
} else if (led_mode == LED_MODE_BREATHE) {
|
||||
// algorithm from http://sean.voisen.org/blog/2011/10/breathing-led-with-arduino/
|
||||
int brightness = (exp(sin(millis()/2000.0*PI)) - 0.36787944)*108.0;
|
||||
led_breathe.r=brightness;
|
||||
led_breathe.g=brightness;
|
||||
led_breathe.b=brightness;
|
||||
|
||||
} else if (led_mode == LED_MODE_RAINBOW) {
|
||||
} else if (led_mode == LED_MODE_CHASE) {
|
||||
} else if (led_mode == LED_MODE_STEADY) {
|
||||
}
|
||||
void update_leds() {
|
||||
update_leds_rgb();
|
||||
|
||||
LED.sync();
|
||||
last_led_mode = led_mode;
|
||||
}
|
||||
|
@ -1,8 +1,37 @@
|
||||
#ifndef LED_CONTROL_H
|
||||
#define LED_CONTROL_H
|
||||
|
||||
#include "WS2812.h"
|
||||
#define LED_MODES 6
|
||||
#define LED_MODE_OFF 0
|
||||
#define LED_MODE_STEADY 1
|
||||
#define LED_MODE_BREATHE 2
|
||||
#define LED_MODE_RAINBOW 3
|
||||
#define LED_MODE_HEATMAP 4
|
||||
#define LED_MODE_CHASE 5
|
||||
|
||||
#define LED_DATA_PIN 4
|
||||
|
||||
#define LED_COUNT 64
|
||||
|
||||
static const int key_led_map[4][16] =
|
||||
{
|
||||
{3,4,11,12,19,20,27,28, 35,39,40,47,48,55,56,63},
|
||||
{2,5,10,13,18,21,26,29, 34,38,41,46,49,54,57,62},
|
||||
{1,6,9,14, 17,22,25,30, 33,37,42,45,50,53,58,61},
|
||||
{0,7,8,15,16,23,24,31, 32,36,43,44,51,52,59,60},
|
||||
};
|
||||
|
||||
#ifndef led_control_h
|
||||
#define led_control_h
|
||||
void setup_leds();
|
||||
|
||||
|
||||
void setup_leds();
|
||||
void update_leds();
|
||||
void set_all_leds_to(cRGB color);
|
||||
|
||||
|
||||
|
||||
byte key_to_led(byte row, byte col);
|
||||
void set_key_color(byte row, byte col);
|
||||
cRGB get_key_color(byte row, byte col);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in new issue