aboutsummaryrefslogtreecommitdiff
path: root/docs/feature_rgb_matrix.md
diff options
context:
space:
mode:
authorVlad K <vkvitnevski@gmail.com>2021-11-01 15:04:37 -0700
committerGitHub <noreply@github.com>2021-11-02 09:04:37 +1100
commita29ca1e7f1a5addfde163b158399684505453fc9 (patch)
tree3a98dc034d034c4a5e8a30b1e744d7793ecbc00b /docs/feature_rgb_matrix.md
parent7f8faa429e0c0662cec34a7d60e33ca58333d6d7 (diff)
downloadqmk_firmware-a29ca1e7f1a5addfde163b158399684505453fc9.tar.gz
qmk_firmware-a29ca1e7f1a5addfde163b158399684505453fc9.zip
Add support for ISSI drivers on both sides of a split keyboard (#13842)
* Gets RGB working on a split keyboard with IS31FL3733. Currently needs small tweak to re-enable WS2812 * Added helper function * Trying to integrate the function * Moved functionality into a macro * Swapped conditional for a macro everywhere * Tidying up * More code cleanup * Documentation updates * Fixed formatting via linter * Switching to a function from a macro * Fixed compile error * Fixing WS2812 behavior. UNTESTED. * Updated documentation about the driver addresses. * Fixed code for WS2812 * Trying to add in LED_MATRIX support * Updated effects for LED matrix * Updated third-party effect defines. * Ran format-c on modified files * Apply suggestions from code review Co-authored-by: Ryan <fauxpark@gmail.com> * Move to static inline. Avoids issues with gcc v8+ * Move helper function for LED_matrix to static inline to avoid issues with gcc v8+ Co-authored-by: Vlad Kvitnevskiy <vladkvit@outlook.com> Co-authored-by: Ryan <fauxpark@gmail.com>
Diffstat (limited to 'docs/feature_rgb_matrix.md')
-rw-r--r--docs/feature_rgb_matrix.md7
1 files changed, 4 insertions, 3 deletions
diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md
index 41d0bca37..fa06e46e4 100644
--- a/docs/feature_rgb_matrix.md
+++ b/docs/feature_rgb_matrix.md
@@ -49,6 +49,8 @@ Here is an example using 2 drivers.
49 49
50!> Note the parentheses, this is so when `DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)` will give very different results than `rand() % DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL`. 50!> Note the parentheses, this is so when `DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)` will give very different results than `rand() % DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL`.
51 51
52For split keyboards using `RGB_MATRIX_SPLIT` with an LED driver, you can either have the same driver address or different driver addresses. If using different addresses, use `DRIVER_ADDR_1` for one and `DRIVER_ADDR_2` for the other one. Then, in `g_is31_leds`, fill out the correct driver index (0 or 1). If using one address, use `DRIVER_ADDR_1` for both, and use index 0 for `g_is31_leds`.
53
52Define these arrays listing all the LEDs in your `<keyboard>.c`: 54Define these arrays listing all the LEDs in your `<keyboard>.c`:
53 55
54```c 56```c
@@ -540,7 +542,7 @@ static bool my_cool_effect(effect_params_t* params) {
540 for (uint8_t i = led_min; i < led_max; i++) { 542 for (uint8_t i = led_min; i < led_max; i++) {
541 rgb_matrix_set_color(i, 0xff, 0xff, 0x00); 543 rgb_matrix_set_color(i, 0xff, 0xff, 0x00);
542 } 544 }
543 return led_max < DRIVER_LED_TOTAL; 545 return rgb_matrix_check_finished_leds(led_max);
544} 546}
545 547
546// e.g: A more complex effect, relying on external methods and state, with 548// e.g: A more complex effect, relying on external methods and state, with
@@ -554,8 +556,7 @@ static bool my_cool_effect2_complex_run(effect_params_t* params) {
554 for (uint8_t i = led_min; i < led_max; i++) { 556 for (uint8_t i = led_min; i < led_max; i++) {
555 rgb_matrix_set_color(i, 0xff, some_global_state++, 0xff); 557 rgb_matrix_set_color(i, 0xff, some_global_state++, 0xff);
556 } 558 }
557 559 return rgb_matrix_check_finished_leds(led_max);
558 return led_max < DRIVER_LED_TOTAL;
559} 560}
560static bool my_cool_effect2(effect_params_t* params) { 561static bool my_cool_effect2(effect_params_t* params) {
561 if (params->init) my_cool_effect2_complex_init(params); 562 if (params->init) my_cool_effect2_complex_init(params);