diff options
| author | Takeshi ISHII <2170248+mtei@users.noreply.github.com> | 2019-05-02 23:59:29 +0900 |
|---|---|---|
| committer | MechMerlin <30334081+mechmerlin@users.noreply.github.com> | 2019-05-02 07:59:29 -0700 |
| commit | 3da8d46a07167fc862e90b6bb232812d5cb64651 (patch) | |
| tree | 5af2e45ad1349b21afb075441a5032897e3b812d /util | |
| parent | 4db31fb374d365bfa0f5c8a25d089bb2f967352f (diff) | |
| download | qmk_firmware-3da8d46a07167fc862e90b6bb232812d5cb64651.tar.gz qmk_firmware-3da8d46a07167fc862e90b6bb232812d5cb64651.zip | |
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 'util')
| -rw-r--r-- | util/rgblight_breathing_table_calc.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/util/rgblight_breathing_table_calc.c b/util/rgblight_breathing_table_calc.c new file mode 100644 index 000000000..fc4d49ea5 --- /dev/null +++ b/util/rgblight_breathing_table_calc.c | |||
| @@ -0,0 +1,49 @@ | |||
| 1 | // | ||
| 2 | // calculate rgblight_effect_breathe_table[] values | ||
| 3 | // | ||
| 4 | // this is host program for quantum/rgblight.c:void rgblight_effect_breathing(); | ||
| 5 | // | ||
| 6 | // example: | ||
| 7 | // $ edit util/rgblight_breathing_table_calc.c | ||
| 8 | // $ cc -o util/rgblight_breathing_table_calc util/rgblight_breathing_table_calc.c | ||
| 9 | // $ ./util/rgblight_breathing_table_calc > keyboards/KEYBOARD_NAME/keymaps/KEYMAP_NAME/rgblight_breathe_table.h | ||
| 10 | // | ||
| 11 | #include <stdio.h> | ||
| 12 | #include <math.h> | ||
| 13 | #include <stdint.h> | ||
| 14 | |||
| 15 | /// customize breeathing effect part /////////////////////////// | ||
| 16 | #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 | ||
| 17 | #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 | ||
| 18 | //////////////////////////////////////////////////////////////// | ||
| 19 | |||
| 20 | int main(void) { | ||
| 21 | int pos, step; | ||
| 22 | int table[256]; | ||
| 23 | for (pos = 0; pos < 256; pos ++ ) { | ||
| 24 | table[pos] = (uint8_t)( | ||
| 25 | (exp(sin((pos/255.0)*M_PI))- RGBLIGHT_EFFECT_BREATHE_CENTER/M_E) | ||
| 26 | * (RGBLIGHT_EFFECT_BREATHE_MAX/(M_E-1/M_E)) | ||
| 27 | ); | ||
| 28 | } | ||
| 29 | printf("#ifndef RGBLIGHT_EFFECT_BREATHE_TABLE\n"); | ||
| 30 | printf("#define RGBLIGHT_EFFECT_BREATHE_TABLE\n\n"); | ||
| 31 | printf("const uint8_t rgblight_effect_breathe_table[] PROGMEM = {\n"); | ||
| 32 | printf(" /* #define RGBLIGHT_EFFECT_BREATHE_CENTER %.2f */\n", RGBLIGHT_EFFECT_BREATHE_CENTER); | ||
| 33 | printf(" /* #define RGBLIGHT_EFFECT_BREATHE_MAX %d */\n", RGBLIGHT_EFFECT_BREATHE_MAX); | ||
| 34 | |||
| 35 | for (int s = 0, step = (1<<s); s < 3 ; s += 1, step = (1<<s) ) { | ||
| 36 | printf("\n #if RGBLIGHT_BREATHE_TABLE_SIZE == %d\n", | ||
| 37 | s == 0 ? 256:(s== 1 ? 128: 64)); | ||
| 38 | for (pos = 0; pos < 256; pos += step ) { | ||
| 39 | printf(" 0x%x%s", table[pos], (pos+step)>=256?"":"," ); | ||
| 40 | if ((pos+step) % 8 == 0) | ||
| 41 | printf("\n"); | ||
| 42 | } | ||
| 43 | printf(" #endif /* %d bytes table */\n", s == 0 ? 256:(s== 1 ? 128: 64)); | ||
| 44 | } | ||
| 45 | printf("};\n"); | ||
| 46 | printf("\nstatic const int table_scale = 256/sizeof(rgblight_effect_breathe_table);\n"); | ||
| 47 | printf("\n#endif /* RGBLIGHT_EFFECT_BREATHE_TABLE */\n"); | ||
| 48 | return 0; | ||
| 49 | } | ||
