summaryrefslogtreecommitdiff
path: root/quantum/rgblight.c
diff options
context:
space:
mode:
authorTakeshi ISHII <2170248+mtei@users.noreply.github.com>2019-05-02 23:59:29 +0900
committerDrashna Jaelre <drashna@live.com>2019-05-02 09:12:28 -0700
commit4550e29f9567df5cb8fb161433d323fa74595282 (patch)
tree24b61234fe1e9efddb2ce9147a4b82765fc7acf2 /quantum/rgblight.c
parent59d28fe2884c0639ef020ece3e1bc6967ab0881f (diff)
If RGBLIGHT_EFFECT_BREATHE_CENTER is undefined, use fixed breathe table instead of exp() and sin() (#5484)
* If RGBLIGHT_EFFECT_BREATHE_CENTER is undefined, use fixed breathe table instead of exp() and sin() * Change rgblight breathing table size to be easily selectable. add RGBLIGHT_BREATHE_TABLE_SIZE macro for customize breathing effect.
Diffstat (limited to 'quantum/rgblight.c')
-rw-r--r--quantum/rgblight.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/quantum/rgblight.c b/quantum/rgblight.c
index 2f23768ed7..2c8665a631 100644
--- a/quantum/rgblight.c
+++ b/quantum/rgblight.c
@@ -973,6 +973,14 @@ void rgblight_task(void) {
// Effects
#ifdef RGBLIGHT_EFFECT_BREATHING
+
+#ifndef RGBLIGHT_EFFECT_BREATHE_CENTER
+ #ifndef RGBLIGHT_BREATHE_TABLE_SIZE
+ #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256 or 128 or 64
+ #endif
+ #include <rgblight_breathe_table.h>
+#endif
+
__attribute__ ((weak))
const uint8_t RGBLED_BREATHING_INTERVALS[] PROGMEM = {30, 20, 10, 5};
@@ -980,7 +988,11 @@ void rgblight_effect_breathing(animation_status_t *anim) {
float val;
// http://sean.voisen.org/blog/2011/10/breathing-led-with-arduino/
+#ifdef RGBLIGHT_EFFECT_BREATHE_TABLE
+ val = pgm_read_byte(&rgblight_effect_breathe_table[anim->pos / table_scale]);
+#else
val = (exp(sin((anim->pos/255.0)*M_PI)) - RGBLIGHT_EFFECT_BREATHE_CENTER/M_E)*(RGBLIGHT_EFFECT_BREATHE_MAX/(M_E-1/M_E));
+#endif
rgblight_sethsv_noeeprom_old(rgblight_config.hue, rgblight_config.sat, val);
anim->pos = (anim->pos + 1) % 256;
}