Jack Humbert 7 anni fa
parent
commit
18e266f9f2

+ 31 - 14
keyboards/ergodox_ez/config.h

@@ -65,20 +65,37 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #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

+ 126 - 0
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
+};

+ 4 - 3
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
+LAYOUTS = ergodox

+ 3 - 4
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();

+ 14 - 4
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);
 }