From 18e266f9f25145bf536a56b1c67b2abcc79e93b3 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Mon, 30 Apr 2018 15:32:50 -0400 Subject: [PATCH] not quite working --- keyboards/ergodox_ez/config.h | 45 +++++++---- keyboards/ergodox_ez/ergodox_ez.c | 126 ++++++++++++++++++++++++++++++ keyboards/ergodox_ez/rules.mk | 7 +- quantum/quantum.c | 7 +- quantum/rgb_matrix.c | 18 ++++- 5 files changed, 178 insertions(+), 25 deletions(-) diff --git a/keyboards/ergodox_ez/config.h b/keyboards/ergodox_ez/config.h index b258a5b2e6..25f33f61cc 100644 --- a/keyboards/ergodox_ez/config.h +++ b/keyboards/ergodox_ez/config.h @@ -65,20 +65,37 @@ along with this program. If not, see . #define LED_BRIGHTNESS_HI 255 /* ws2812 RGB LED */ -#define RGB_DI_PIN D7 -#define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 15 // Number of LEDs -#define RGBLIGHT_HUE_STEP 12 -#define RGBLIGHT_SAT_STEP 255 -#define RGBLIGHT_VAL_STEP 12 - -/* fix space cadet rollover issue */ -#define DISABLE_SPACE_CADET_ROLLOVER - -// #define RGB_MIDI -#define RGBW_BB_TWI - -#define RGBW 1 +// #define RGB_DI_PIN D7 +// #define RGBLIGHT_ANIMATIONS +// #define RGBLED_NUM 15 // Number of LEDs +// #define RGBLIGHT_HUE_STEP 12 +// #define RGBLIGHT_SAT_STEP 255 +// #define RGBLIGHT_VAL_STEP 12 + +// /* fix space cadet rollover issue */ +// #define DISABLE_SPACE_CADET_ROLLOVER + +// // #define RGB_MIDI +// #define RGBW_BB_TWI + +// #define RGBW 1 + +// This is a 7-bit address, that gets left-shifted and bit 0 +// set to 0 for write, 1 for read (as per I2C protocol) +// The address will vary depending on your wiring: +// 0b1110100 AD <-> GND +// 0b1110111 AD <-> VCC +// 0b1110101 AD <-> SCL +// 0b1110110 AD <-> SDA +#define DRIVER_ADDR_1 0b1110100 +#define DRIVER_ADDR_2 0b1110111 + +#define DRIVER_COUNT 2 +#define DRIVER_1_LED_TOTAL 24 +#define DRIVER_2_LED_TOTAL 24 +#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + +//#define RGB_MATRIX_ANIMATIONS /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 15 diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c index 3609f6f810..8fb6789b0a 100644 --- a/keyboards/ergodox_ez/ergodox_ez.c +++ b/keyboards/ergodox_ez/ergodox_ez.c @@ -134,3 +134,129 @@ const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{0,0}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}}, }; #endif + + +const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +/* driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, C3_1, C2_1, C4_1}, // LED1 on right + {0, C6_1, C5_1, C7_1}, // LED2 + {0, C4_2, C3_2, C5_2}, // LED3 + {0, C7_2, C6_2, C8_2}, // LED4 + {0, C2_3, C1_3, C3_3}, // LED5 + {0, C5_3, C4_3, C6_3}, // LED6 + {0, C8_3, C7_3, C9_3}, // LED7 + {0, C2_4, C1_4, C3_4}, // LED8 + {0, C6_4, C5_4, C7_4}, // LED9 + {0, C2_5, C1_5, C3_5}, // LED10 + {0, C7_5, C6_5, C8_5}, // LED11 + {0, C2_6, C1_6, C3_6}, // LED12 + {0, C5_6, C4_6, C6_6}, // LED13 + {0, C8_6, C7_6, C9_6}, // LED14 + {0, C2_7, C1_7, C3_7}, // LED15 + {0, C5_7, C4_7, C6_7}, // LED16 + {0, C2_8, C1_8, C3_8}, // LED17 + {0, C5_8, C4_8, C6_8}, // LED18 + + {0, C3_9, C2_9, C4_9}, // LED19 + {0, C6_9, C5_9, C7_9}, // LED20 + {0, C4_10, C3_10, C5_10}, // LED21 + {0, C7_10, C6_10, C8_10}, // LED22 + {0, C2_11, C1_11, C3_11}, // LED23 + {0, C5_11, C4_11, C6_11}, // LED24 + + {1, C3_1, C2_1, C4_1}, // LED1 on left + {1, C6_1, C5_1, C7_1}, // LED2 + {1, C4_2, C3_2, C5_2}, // LED3 + {1, C7_2, C6_2, C8_2}, // LED4 + {1, C2_3, C1_3, C3_3}, // LED5 + {1, C5_3, C4_3, C6_3}, // LED6 + {1, C8_3, C7_3, C9_3}, // LED7 + {1, C2_4, C1_4, C3_4}, // LED8 + {1, C6_4, C5_4, C7_4}, // LED9 + {1, C2_5, C1_5, C3_5}, // LED10 + {1, C7_5, C6_5, C8_5}, // LED11 + {1, C2_6, C1_6, C3_6}, // LED12 + {1, C5_6, C4_6, C6_6}, // LED13 + {1, C8_6, C7_6, C9_6}, // LED14 + {1, C2_7, C1_7, C3_7}, // LED15 + {1, C5_7, C4_7, C6_7}, // LED16 + {1, C2_8, C1_8, C3_8}, // LED17 + {1, C5_8, C4_8, C6_8}, // LED18 + + {1, C3_9, C2_9, C4_9}, // LED19 + {1, C6_9, C5_9, C7_9}, // LED20 + {1, C4_10, C3_10, C5_10}, // LED21 + {1, C7_10, C6_10, C8_10}, // LED22 + {1, C2_11, C1_11, C3_11}, // LED23 + {1, C5_11, C4_11, C6_11} // LED24 +}; + + +const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { + + /*{row | col << 4} + | {x=0..224, y=0..64} + | | modifier + | | | */ + {{0|(0<<4)}, {24.9*5, 16*0}, 0}, // LED 1 on right + {{0|(1<<4)}, {24.9*6, 16*0}, 0}, // LED 2 + {{0|(2<<4)}, {24.9*7, 16*0}, 0}, // LED 3 + {{0|(3<<4)}, {24.9*8, 16*0}, 0}, // LED 4 + {{0|(4<<4)}, {24.9*9, 16*0}, 0}, // LED 5 + + {{1|(5<<4)}, {24.9*5, 16*1}, 0}, // LED 6 + {{1|(6<<4)}, {24.9*6, 16*1}, 0}, // LED 7 + {{1|(7<<4)}, {24.9*7, 16*1}, 0}, // LED 8 + {{1|(8<<4)}, {24.9*8, 16*1}, 0}, // LED 9 + {{1|(9<<4)}, {24.9*9, 16*1}, 0}, // LED 10 + + {{2|(5<<4)}, {24.9*5, 16*2}, 0}, // LED 11 + {{2|(6<<4)}, {24.9*6, 16*2}, 0}, // LED 12 + {{2|(7<<4)}, {24.9*7, 16*2}, 0}, // LED 13 + {{2|(8<<4)}, {24.9*8, 16*2}, 0}, // LED 14 + {{2|(9<<4)}, {24.9*9, 16*2}, 0}, // LED 15 + + {{3|(5<<4)}, {24.9*5, 16*2}, 0}, // LED 16 + {{3|(6<<4)}, {24.9*6, 16*2}, 0}, // LED 17 + {{3|(7<<4)}, {24.9*7, 16*2}, 0}, // LED 18 + {{3|(8<<4)}, {24.9*8, 16*2}, 0}, // LED 19 + {{3|(9<<4)}, {24.9*9, 16*2}, 0}, // LED 20 + + {{4|(6<<4)}, {24.9*6, 16*2}, 0}, // LED 21 + {{4|(7<<4)}, {24.9*7, 16*2}, 0}, // LED 22 + {{4|(8<<4)}, {24.9*8, 16*2}, 0}, // LED 23 + {{4|(9<<4)}, {24.9*9, 16*2}, 0}, // LED 24 + + {{0|(0<<4)}, {24.9*4, 16*0}, 0}, // LED 1 on left + {{0|(1<<4)}, {24.9*3, 16*0}, 0}, // LED 2 + {{0|(2<<4)}, {24.9*2, 16*0}, 0}, // LED 3 + {{0|(3<<4)}, {24.9*1, 16*0}, 0}, // LED 4 + {{0|(4<<4)}, {24.9*0, 16*0}, 0}, // LED 5 + + {{1|(5<<4)}, {24.9*4, 16*1}, 0}, // LED 6 + {{1|(6<<4)}, {24.9*3, 16*1}, 0}, // LED 7 + {{1|(7<<4)}, {24.9*2, 16*1}, 0}, // LED 8 + {{1|(8<<4)}, {24.9*1, 16*1}, 0}, // LED 9 + {{1|(9<<4)}, {24.9*0, 16*1}, 0}, // LED 10 + + {{2|(5<<4)}, {24.9*4, 16*2}, 0}, // LED 11 + {{2|(6<<4)}, {24.9*3, 16*2}, 0}, // LED 12 + {{2|(7<<4)}, {24.9*2, 16*2}, 0}, // LED 13 + {{2|(8<<4)}, {24.9*1, 16*2}, 0}, // LED 14 + {{2|(9<<4)}, {24.9*0, 16*2}, 0}, // LED 15 + + {{3|(5<<4)}, {24.9*4, 16*2}, 0}, // LED 16 + {{3|(6<<4)}, {24.9*3, 16*2}, 0}, // LED 17 + {{3|(7<<4)}, {24.9*2, 16*2}, 0}, // LED 18 + {{3|(8<<4)}, {24.9*1, 16*2}, 0}, // LED 19 + {{3|(9<<4)}, {24.9*0, 16*2}, 0}, // LED 20 + + {{4|(6<<4)}, {24.9*3, 16*2}, 0}, // LED 21 + {{4|(7<<4)}, {24.9*3, 16*2}, 0}, // LED 22 + {{4|(8<<4)}, {24.9*1, 16*2}, 0}, // LED 23 + {{4|(9<<4)}, {24.9*0, 16*2}, 0}, // LED 24 +}; diff --git a/keyboards/ergodox_ez/rules.mk b/keyboards/ergodox_ez/rules.mk index e0111272a5..774a4b86cf 100644 --- a/keyboards/ergodox_ez/rules.mk +++ b/keyboards/ergodox_ez/rules.mk @@ -5,7 +5,7 @@ # # make clean = Clean out built project files. # -# That's pretty much all you need. To compile, always go make clean, +# That's pretty much all you need. To compile, always go make clean, # followed by make. # # For advanced users only: @@ -81,6 +81,7 @@ UNICODE_ENABLE = yes # Unicode ONEHAND_ENABLE = yes # Allow swapping hands of keyboard SLEEP_LED_ENABLE = no API_SYSEX_ENABLE = no -RGBLIGHT_ENABLE = yes +RGBLIGHT_ENABLE = no +RGB_MATRIX_ENABLE = yes -LAYOUTS = ergodox \ No newline at end of file +LAYOUTS = ergodox diff --git a/quantum/quantum.c b/quantum/quantum.c index f0a19b29cf..a8fa8fa4a5 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -766,10 +766,9 @@ void matrix_scan_quantum() { #endif #ifdef RGB_MATRIX_ENABLE - // if (rgb_matrix_task_counter == 0) - rgb_matrix_task(); - // rgb_matrix_task_counter = ((rgb_matrix_task_counter + 1) % 5); - rgb_matrix_update_pwm_buffers(); + // if (rgb_matrix_task_counter == 0) + rgb_matrix_task(); + // rgb_matrix_task_counter = ((rgb_matrix_task_counter + 1) % 5); #endif matrix_scan_kb(); diff --git a/quantum/rgb_matrix.c b/quantum/rgb_matrix.c index 6cb0478f71..5fd94f00f0 100644 --- a/quantum/rgb_matrix.c +++ b/quantum/rgb_matrix.c @@ -219,11 +219,20 @@ void rgb_matrix_all_off(void) { rgb_matrix_set_color_all( 0, 0, 0 ); } +static HSV current_solid_color; + // Solid color void rgb_matrix_solid_color(void) { - HSV hsv = { .h = rgb_matrix_config.hue, .s = rgb_matrix_config.sat, .v = rgb_matrix_config.val }; - RGB rgb = hsv_to_rgb( hsv ); - rgb_matrix_set_color_all( rgb.r, rgb.g, rgb.b ); + if (current_solid_color.h != rgb_matrix_config.hue && + current_solid_color.s != rgb_matrix_config.sat && + current_solid_color.v != rgb_matrix_config.val) { + HSV hsv = { .h = rgb_matrix_config.hue, .s = rgb_matrix_config.sat, .v = rgb_matrix_config.val }; + RGB rgb = hsv_to_rgb( hsv ); + rgb_matrix_set_color_all( rgb.r, rgb.g, rgb.b ); + current_solid_color.h = hsv.h; + current_solid_color.s = hsv.s; + current_solid_color.v = hsv.v; + } } void rgb_matrix_solid_reactive(void) { @@ -685,6 +694,7 @@ void rgb_matrix_task(void) { rgb_matrix_indicators(); } + rgb_matrix_update_pwm_buffers(); } void rgb_matrix_indicators(void) { @@ -864,7 +874,7 @@ void rgblight_decrease_val(void) { } void rgblight_mode(uint8_t mode) { - rgb_matrix_config.mode = mode; + rgb_matrix_config.mode = 1; eeconfig_update_rgb_matrix(rgb_matrix_config.raw); }