diff options
author | luc wastiaux <luc.wastiaux@airpost.net> | 2017-02-13 07:44:28 +0800 |
---|---|---|
committer | luc wastiaux <luc.wastiaux@airpost.net> | 2017-02-13 07:44:28 +0800 |
commit | 352d79e1fbbd7eea65793abb261dd544fec7bb1c (patch) | |
tree | e006ee8098826054d93939b2a59521f6c032e10d /keyboards/handwired/promethium/rgbsps.c | |
parent | 5f8535b356e66975e20f1a573ab104db75f8b33c (diff) | |
parent | 4505db5d0e0c2423645cc9117f29b942d4841c5b (diff) | |
download | qmk_firmware-352d79e1fbbd7eea65793abb261dd544fec7bb1c.tar.gz |
Merge remote-tracking branch 'upstream/master'
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 ea922ec3f..f30badd35 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); +} + |