diff options
author | Priyadi Iman Nurcahyo <priyadi@priyadi.net> | 2017-02-10 21:28:46 +0700 |
---|---|---|
committer | Priyadi Iman Nurcahyo <priyadi@priyadi.net> | 2017-02-10 21:28:46 +0700 |
commit | 5944ab246a981d6ceca94b0972345277a746c2d3 (patch) | |
tree | 01c240c2dd6a39cc44157e51287a7b194c6b4017 /keyboards/handwired/promethium/rgbsps.c | |
parent | 07879bf66b29535214a147b1797f96767b1faa58 (diff) | |
download | qmk_firmware-5944ab246a981d6ceca94b0972345277a746c2d3.tar.gz qmk_firmware-5944ab246a981d6ceca94b0972345277a746c2d3.zip |
Implement battery level indicator
Diffstat (limited to 'keyboards/handwired/promethium/rgbsps.c')
-rw-r--r-- | keyboards/handwired/promethium/rgbsps.c | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/keyboards/handwired/promethium/rgbsps.c b/keyboards/handwired/promethium/rgbsps.c index ea922ec3fd..f30badd356 100644 --- a/keyboards/handwired/promethium/rgbsps.c +++ b/keyboards/handwired/promethium/rgbsps.c @@ -21,4 +21,53 @@ void rgbsps_turnoff(void) { void rgbsps_send(void) { ws2812_setleds(led, RGBSPS_NUM); -}
\ No newline at end of file +} + +void rgbsps_sethsv(uint8_t index, uint16_t hue, uint8_t sat, uint8_t val) { + uint8_t r = 0, g = 0, b = 0, base, color; + + if (sat == 0) { // Acromatic color (gray). Hue doesn't mind. + r = val; + g = val; + b = val; + } else { + base = ((255 - sat) * val) >> 8; + color = (val - base) * (hue % 60) / 60; + + switch (hue / 60) { + case 0: + r = val; + g = base + color; + b = base; + break; + case 1: + r = val - color; + g = val; + b = base; + break; + case 2: + r = base; + g = val; + b = base + color; + break; + case 3: + r = base; + g = val - color; + b = val; + break; + case 4: + r = base + color; + g = base; + b = val; + break; + case 5: + r = val; + g = base; + b = val - color; + break; + } + } + + rgbsps_set(index, r, g, b); +} + |