From d24c50353115760d6b72ed024317ca37b3d896d2 Mon Sep 17 00:00:00 2001 From: scda Date: Tue, 5 Sep 2023 11:13:31 +0200 Subject: [PATCH] add color cycling to trackpad LED --- .../keymaps/default/keymap.c | 35 ++++++++++++++----- keyboards/scda/promicro_trackball/rules.mk | 2 +- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/keyboards/scda/promicro_trackball/keymaps/default/keymap.c b/keyboards/scda/promicro_trackball/keymaps/default/keymap.c index ee6ba7f4790..4be308f9f8d 100644 --- a/keyboards/scda/promicro_trackball/keymaps/default/keymap.c +++ b/keyboards/scda/promicro_trackball/keymaps/default/keymap.c @@ -1,4 +1,5 @@ #include QMK_KEYBOARD_H +#include "color.h" bool set_scrolling = true; @@ -49,15 +50,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void trackball_light(void) { - uint8_t white = 0; - uint8_t red = 255; - uint8_t green = 0; - uint8_t blue = 0; +uint16_t hueVal = 0; +float hueDeltaStepSize = 0.01; +float hueCycleBuffer = 0; +void trackball_cycle_light(void) { + hueCycleBuffer += hueDeltaStepSize; - pimoroni_trackball_set_rgbw(red,green,blue,white); + // delay: only increase hueVal every 1/delta seconds + if (hueCycleBuffer < 1) { + return; + } + + // compute new hue from integer value of the buffer and + // reset delta to decimal points after integer value + hueVal += (uint8_t) hueCycleBuffer; + hueCycleBuffer -= (uint8_t) hueCycleBuffer; // + + // bring hue back in range + if (hueVal >= 255) { + hueVal = hueVal % 255; + } + + // convert and set value for trackball + HSV hsv = {hueVal, 255, 255}; + RGB rgb = hsv_to_rgb(hsv); + pimoroni_trackball_set_rgbw(rgb.r, rgb.g, rgb.b, 0); } -void keyboard_post_init_user(void) { - trackball_light(); +void housekeeping_task_user(void) { + trackball_cycle_light(); } diff --git a/keyboards/scda/promicro_trackball/rules.mk b/keyboards/scda/promicro_trackball/rules.mk index f5128648daf..c8f84f3e360 100644 --- a/keyboards/scda/promicro_trackball/rules.mk +++ b/keyboards/scda/promicro_trackball/rules.mk @@ -1,3 +1,3 @@ -# This file intentionally left blank POINTING_DEVICE_DRIVER = pimoroni_trackball POINTING_DEVICE_ENABLE = yes +SRC += color.c