diff options
author | skullydazed <skullydazed@users.noreply.github.com> | 2017-09-06 14:49:19 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-06 14:49:19 -0700 |
commit | 4580d3a730c078484ea417575c617c17598b5a39 (patch) | |
tree | 6b180261bde6124a189b054a0657faa480e571c5 /quantum/rgblight.c | |
parent | 0ce45eb0b7ad0af28de4418906543c51dbc505cc (diff) |
RGB improvements (#1684)
* Allow the knight animation to be restricted to a portion of the LED strip
* Add keys for jumping directly to particular animation modes
* Remove orphaned break statements
* Tweak the `RGB_MODE` buttons so they cycle through the same mode.
* small indentation fix
Diffstat (limited to 'quantum/rgblight.c')
-rw-r--r-- | quantum/rgblight.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/quantum/rgblight.c b/quantum/rgblight.c index 1b50764503..5ae6e69d6a 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -22,7 +22,6 @@ #include "debug.h" #include "led_tables.h" - __attribute__ ((weak)) const uint8_t RGBLED_BREATHING_INTERVALS[] PROGMEM = {30, 20, 10, 5}; __attribute__ ((weak)) @@ -32,7 +31,7 @@ const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {100, 50, 20}; __attribute__ ((weak)) const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 50, 20}; __attribute__ ((weak)) -const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {100, 50, 20}; +const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {127, 63, 31}; __attribute__ ((weak)) const uint16_t RGBLED_GRADIENT_RANGES[] PROGMEM = {360, 240, 180, 120, 90}; @@ -197,6 +196,14 @@ void rgblight_step_reverse(void) { rgblight_mode(mode); } +uint32_t rgblight_get_mode(void) { + if (!rgblight_config.enable) { + return false; + } + + return rgblight_config.mode; +} + void rgblight_mode(uint8_t mode) { if (!rgblight_config.enable) { return; @@ -220,6 +227,8 @@ void rgblight_mode(uint8_t mode) { // MODE 9-14, rainbow swirl // MODE 15-20, snake // MODE 21-23, knight + // MODE 24, xmas + // MODE 25-34, static rainbow #ifdef RGBLIGHT_ANIMATIONS rgblight_timer_enable(); @@ -550,7 +559,14 @@ void rgblight_effect_knight(uint8_t interval) { static int8_t increment = 1; uint8_t i, cur; + // Set all the LEDs to 0 for (i = 0; i < RGBLED_NUM; i++) { + led[i].r = 0; + led[i].g = 0; + led[i].b = 0; + } + // Determine which LEDs should be lit up + for (i = 0; i < RGBLIGHT_EFFECT_KNIGHT_LED_NUM; i++) { cur = (i + RGBLIGHT_EFFECT_KNIGHT_OFFSET) % RGBLED_NUM; if (i >= low_bound && i <= high_bound) { @@ -563,10 +579,12 @@ void rgblight_effect_knight(uint8_t interval) { } rgblight_set(); + // Move from low_bound to high_bound changing the direction we increment each + // time a boundary is hit. low_bound += increment; high_bound += increment; - if (high_bound <= 0 || low_bound >= RGBLED_NUM - 1) { + if (high_bound <= 0 || low_bound >= RGBLIGHT_EFFECT_KNIGHT_LED_NUM - 1) { increment = -increment; } } |