diff options
author | XScorpion2 <rcalt2vt@gmail.com> | 2019-04-14 20:50:35 -0400 |
---|---|---|
committer | MechMerlin <30334081+mechmerlin@users.noreply.github.com> | 2019-04-14 17:50:35 -0700 |
commit | 5fcd744ddba591829a129560992b2e43fb615d4d (patch) | |
tree | 33b78133af1563f5dfa1e125a37f86e30a7df1cb /drivers/avr/ws2812.c | |
parent | d7ba190cd9b90bce3a00dfa2a9afe4b3bf0a1dbb (diff) | |
download | qmk_firmware-5fcd744ddba591829a129560992b2e43fb615d4d.tar.gz qmk_firmware-5fcd744ddba591829a129560992b2e43fb615d4d.zip |
Features/ws2812 matrix driver (#5418)
* WS2812 driver implementation for RGB Matrix
* Added driver configuration docs
Diffstat (limited to 'drivers/avr/ws2812.c')
-rw-r--r-- | drivers/avr/ws2812.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/avr/ws2812.c b/drivers/avr/ws2812.c index 5bd837ec7..b3ed4fd0b 100644 --- a/drivers/avr/ws2812.c +++ b/drivers/avr/ws2812.c | |||
@@ -27,6 +27,12 @@ | |||
27 | #include <util/delay.h> | 27 | #include <util/delay.h> |
28 | #include "debug.h" | 28 | #include "debug.h" |
29 | 29 | ||
30 | #if !defined(LED_ARRAY) && defined(RGB_MATRIX_ENABLE) | ||
31 | // LED color buffer | ||
32 | LED_TYPE led[DRIVER_LED_TOTAL]; | ||
33 | #define LED_ARRAY led | ||
34 | #endif | ||
35 | |||
30 | #ifdef RGBW_BB_TWI | 36 | #ifdef RGBW_BB_TWI |
31 | 37 | ||
32 | // Port for the I2C | 38 | // Port for the I2C |
@@ -141,6 +147,25 @@ unsigned char I2C_Write(unsigned char c) | |||
141 | 147 | ||
142 | #endif | 148 | #endif |
143 | 149 | ||
150 | #ifdef RGB_MATRIX_ENABLE | ||
151 | // Set an led in the buffer to a color | ||
152 | void inline ws2812_setled(int i, uint8_t r, uint8_t g, uint8_t b) | ||
153 | { | ||
154 | led[i].r = r; | ||
155 | led[i].g = g; | ||
156 | led[i].b = b; | ||
157 | } | ||
158 | |||
159 | void ws2812_setled_all (uint8_t r, uint8_t g, uint8_t b) | ||
160 | { | ||
161 | for (int i = 0; i < RGBLED_NUM; i++) { | ||
162 | led[i].r = r; | ||
163 | led[i].g = g; | ||
164 | led[i].b = b; | ||
165 | } | ||
166 | } | ||
167 | #endif | ||
168 | |||
144 | // Setleds for standard RGB | 169 | // Setleds for standard RGB |
145 | void inline ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) | 170 | void inline ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) |
146 | { | 171 | { |