split led config into 2 arrays
This commit is contained in:
parent
b3e36c734a
commit
ced0c52eac
@ -21,24 +21,10 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
typedef struct Point {
|
|
||||||
uint8_t x;
|
|
||||||
uint8_t y;
|
|
||||||
} __attribute__((packed)) Point;
|
|
||||||
|
|
||||||
typedef struct is31_led {
|
typedef struct is31_led {
|
||||||
uint8_t driver:2;
|
uint8_t driver:2;
|
||||||
uint8_t matrix:1;
|
uint8_t matrix:1;
|
||||||
uint8_t modifier:1;
|
|
||||||
uint8_t control_index;
|
uint8_t control_index;
|
||||||
union {
|
|
||||||
uint8_t raw;
|
|
||||||
struct {
|
|
||||||
uint8_t row:4; // 16 max
|
|
||||||
uint8_t col:4; // 16 max
|
|
||||||
};
|
|
||||||
} matrix_co;
|
|
||||||
Point point;
|
|
||||||
} __attribute__((packed)) is31_led;
|
} __attribute__((packed)) is31_led;
|
||||||
|
|
||||||
extern const is31_led g_is31_leds[DRIVER_LED_TOTAL];
|
extern const is31_led g_is31_leds[DRIVER_LED_TOTAL];
|
||||||
|
@ -20,71 +20,138 @@
|
|||||||
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
||||||
/* driver
|
/* driver
|
||||||
* | matrix
|
* | matrix
|
||||||
* | | modifier
|
* | | control_index
|
||||||
* | | | control_index
|
* | | |
|
||||||
* | | | | {row | col << 4}
|
* | | | */
|
||||||
* | | | | | {x=0..224, y=0..64} */
|
{0, 0, 3},
|
||||||
{0, 0, 1, 3, {0|(0<<4)}, {20.36*0, 21.33*0}},
|
{0, 0, 4},
|
||||||
{0, 0, 0, 4, {0|(1<<4)}, {20.36*1, 21.33*0}},
|
{0, 0, 5},
|
||||||
{0, 0, 0, 5, {0|(2<<4)}, {20.36*2, 21.33*0}},
|
{0, 1, 3},
|
||||||
{0, 1, 0, 3, {0|(3<<4)}, {20.36*3, 21.33*0}},
|
{0, 1, 4},
|
||||||
{0, 1, 0, 4, {0|(4<<4)}, {20.36*4, 21.33*0}},
|
{0, 1, 5},
|
||||||
{0, 1, 0, 5, {0|(5<<4)}, {20.36*5, 21.33*0}},
|
{1, 0, 3},
|
||||||
{1, 0, 0, 3, {0|(6<<4)}, {20.36*6, 21.33*0}},
|
{1, 0, 4},
|
||||||
{1, 0, 0, 4, {0|(7<<4)}, {20.36*7, 21.33*0}},
|
{1, 0, 5},
|
||||||
{1, 0, 0, 5, {0|(8<<4)}, {20.36*8, 21.33*0}},
|
{1, 1, 3},
|
||||||
{1, 1, 0, 3, {0|(9<<4)}, {20.36*9, 21.33*0}},
|
{1, 1, 4},
|
||||||
{1, 1, 0, 4, {0|(10<<4)}, {20.36*10,21.33*0}},
|
{1, 1, 5},
|
||||||
{1, 1, 1, 5, {0|(11<<4)}, {20.36*11,21.33*0}},
|
|
||||||
|
|
||||||
{0, 0, 1, 6, {1|(0<<4)}, {20.36*0, 21.33*1}},
|
{0, 0, 6},
|
||||||
{0, 0, 0, 7, {1|(1<<4)}, {20.36*1, 21.33*1}},
|
{0, 0, 7},
|
||||||
{0, 0, 0, 8, {1|(2<<4)}, {20.36*2, 21.33*1}},
|
{0, 0, 8},
|
||||||
{0, 1, 0, 6, {1|(3<<4)}, {20.36*3, 21.33*1}},
|
{0, 1, 6},
|
||||||
{0, 1, 0, 7, {1|(4<<4)}, {20.36*4, 21.33*1}},
|
{0, 1, 7},
|
||||||
{0, 1, 0, 8, {1|(5<<4)}, {20.36*5, 21.33*1}},
|
{0, 1, 8},
|
||||||
{1, 0, 0, 6, {1|(6<<4)}, {20.36*6, 21.33*1}},
|
{1, 0, 6},
|
||||||
{1, 0, 0, 7, {1|(7<<4)}, {20.36*7, 21.33*1}},
|
{1, 0, 7},
|
||||||
{1, 0, 0, 8, {1|(8<<4)}, {20.36*8, 21.33*1}},
|
{1, 0, 8},
|
||||||
{1, 1, 0, 6, {1|(9<<4)}, {20.36*9, 21.33*1}},
|
{1, 1, 6},
|
||||||
{1, 1, 0, 7, {1|(10<<4)}, {20.36*10,21.33*1}},
|
{1, 1, 7},
|
||||||
{1, 1, 1, 8, {1|(11<<4)}, {20.36*11,21.33*1}},
|
{1, 1, 8},
|
||||||
|
|
||||||
{0, 0, 1, 9, {2|(0<<4)}, {20.36*0, 21.33*2}},
|
{0, 0, 9},
|
||||||
{0, 0, 0, 10, {2|(1<<4)}, {20.36*1, 21.33*2}},
|
{0, 0, 10},
|
||||||
{0, 0, 0, 11, {2|(2<<4)}, {20.36*2, 21.33*2}},
|
{0, 0, 11},
|
||||||
{0, 1, 0, 9, {2|(3<<4)}, {20.36*3, 21.33*2}},
|
{0, 1, 9},
|
||||||
{0, 1, 0, 10, {2|(4<<4)}, {20.36*4, 21.33*2}},
|
{0, 1, 10},
|
||||||
{0, 1, 0, 11, {2|(5<<4)}, {20.36*5, 21.33*2}},
|
{0, 1, 11},
|
||||||
{1, 0, 0, 9, {2|(6<<4)}, {20.36*6, 21.33*2}},
|
{1, 0, 9},
|
||||||
{1, 0, 0, 10, {2|(7<<4)}, {20.36*7, 21.33*2}},
|
{1, 0, 10},
|
||||||
{1, 0, 0, 11, {2|(8<<4)}, {20.36*8, 21.33*2}},
|
{1, 0, 11},
|
||||||
{1, 1, 0, 9, {2|(9<<4)}, {20.36*9, 21.33*2}},
|
{1, 1, 9},
|
||||||
{1, 1, 0, 10, {2|(10<<4)}, {20.36*10,21.33*2}},
|
{1, 1, 10},
|
||||||
{1, 1, 1, 11, {2|(11<<4)}, {20.36*11,21.33*2}},
|
{1, 1, 11},
|
||||||
|
|
||||||
{0, 0, 1, 12, {3|(0<<4)}, {20.36*0, 21.33*3}},
|
{0, 0, 12},
|
||||||
{0, 0, 1, 13, {3|(1<<4)}, {20.36*1, 21.33*3}},
|
{0, 0, 13},
|
||||||
{0, 0, 1, 14, {3|(2<<4)}, {20.36*2, 21.33*3}},
|
{0, 0, 14},
|
||||||
{0, 1, 1, 12, {3|(3<<4)}, {20.36*3, 21.33*3}},
|
{0, 1, 12},
|
||||||
{0, 1, 1, 13, {3|(4<<4)}, {20.36*4, 21.33*3}},
|
{0, 1, 13},
|
||||||
#ifdef PLANCK_MIT_LAYOUT
|
#ifdef PLANCK_MIT_LAYOUT
|
||||||
{0, 1, 0, 14, {3|(5<<4)}, {20.36*5, 21.33*3}},
|
{0, 1, 14},
|
||||||
{0, 1, 0, 15, {3|(5<<4)}, {20.36*5.5, 21.33*3}},
|
{0, 1, 15},
|
||||||
{1, 0, 0, 12, {3|(5<<4)}, {20.36*6, 21.33*3}},
|
{1, 0, 12},
|
||||||
#else
|
#else
|
||||||
{0, 1, 0, 14, {3|(5<<4)}, {20.36*5, 21.33*3}},
|
{0, 1, 14},
|
||||||
{0, 1, 0, 15, {0xFF}, {20.36*5.5, 21.33*3}},
|
{0, 1, 15},
|
||||||
{1, 0, 0, 12, {3|(6<<4)}, {20.36*6, 21.33*3}},
|
{1, 0, 12},
|
||||||
#endif
|
#endif
|
||||||
{1, 0, 1, 13, {3|(7<<4)}, {20.36*7, 21.33*3}},
|
{1, 0, 13},
|
||||||
{1, 0, 1, 14, {3|(8<<4)}, {20.36*8, 21.33*3}},
|
{1, 0, 14},
|
||||||
{1, 1, 1, 12, {3|(9<<4)}, {20.36*9, 21.33*3}},
|
{1, 1, 12},
|
||||||
{1, 1, 1, 13, {3|(10<<4)}, {20.36*10,21.33*3}},
|
{1, 1, 13},
|
||||||
{1, 1, 1, 14, {3|(11<<4)}, {20.36*11,21.33*3}}
|
{1, 1, 14},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
||||||
|
|
||||||
|
/*{row | col << 4}
|
||||||
|
| {x=0..224, y=0..64}
|
||||||
|
| | modifier
|
||||||
|
| | | */
|
||||||
|
{{0|(0<<4)}, {20.36*0, 21.33*0}, 1},
|
||||||
|
{{0|(1<<4)}, {20.36*1, 21.33*0}, 0},
|
||||||
|
{{0|(2<<4)}, {20.36*2, 21.33*0}, 0},
|
||||||
|
{{0|(3<<4)}, {20.36*3, 21.33*0}, 0},
|
||||||
|
{{0|(4<<4)}, {20.36*4, 21.33*0}, 0},
|
||||||
|
{{0|(5<<4)}, {20.36*5, 21.33*0}, 0},
|
||||||
|
{{0|(6<<4)}, {20.36*6, 21.33*0}, 0},
|
||||||
|
{{0|(7<<4)}, {20.36*7, 21.33*0}, 0},
|
||||||
|
{{0|(8<<4)}, {20.36*8, 21.33*0}, 0},
|
||||||
|
{{0|(9<<4)}, {20.36*9, 21.33*0}, 0},
|
||||||
|
{{0|(10<<4)}, {20.36*10,21.33*0}, 0},
|
||||||
|
{{0|(11<<4)}, {20.36*11,21.33*0}, 1},
|
||||||
|
|
||||||
|
{{1|(0<<4)}, {20.36*0, 21.33*1}, 1},
|
||||||
|
{{1|(1<<4)}, {20.36*1, 21.33*1}, 0},
|
||||||
|
{{1|(2<<4)}, {20.36*2, 21.33*1}, 0},
|
||||||
|
{{1|(3<<4)}, {20.36*3, 21.33*1}, 0},
|
||||||
|
{{1|(4<<4)}, {20.36*4, 21.33*1}, 0},
|
||||||
|
{{1|(5<<4)}, {20.36*5, 21.33*1}, 0},
|
||||||
|
{{1|(6<<4)}, {20.36*6, 21.33*1}, 0},
|
||||||
|
{{1|(7<<4)}, {20.36*7, 21.33*1}, 0},
|
||||||
|
{{1|(8<<4)}, {20.36*8, 21.33*1}, 0},
|
||||||
|
{{1|(9<<4)}, {20.36*9, 21.33*1}, 0},
|
||||||
|
{{1|(10<<4)}, {20.36*10,21.33*1}, 0},
|
||||||
|
{{1|(11<<4)}, {20.36*11,21.33*1}, 1},
|
||||||
|
|
||||||
|
{{2|(0<<4)}, {20.36*0, 21.33*2}, 1},
|
||||||
|
{{2|(1<<4)}, {20.36*1, 21.33*2}, 0},
|
||||||
|
{{2|(2<<4)}, {20.36*2, 21.33*2}, 0},
|
||||||
|
{{2|(3<<4)}, {20.36*3, 21.33*2}, 0},
|
||||||
|
{{2|(4<<4)}, {20.36*4, 21.33*2}, 0},
|
||||||
|
{{2|(5<<4)}, {20.36*5, 21.33*2}, 0},
|
||||||
|
{{2|(6<<4)}, {20.36*6, 21.33*2}, 0},
|
||||||
|
{{2|(7<<4)}, {20.36*7, 21.33*2}, 0},
|
||||||
|
{{2|(8<<4)}, {20.36*8, 21.33*2}, 0},
|
||||||
|
{{2|(9<<4)}, {20.36*9, 21.33*2}, 0},
|
||||||
|
{{2|(10<<4)}, {20.36*10,21.33*2}, 0},
|
||||||
|
{{2|(11<<4)}, {20.36*11,21.33*2}, 1},
|
||||||
|
|
||||||
|
{{3|(0<<4)}, {20.36*0, 21.33*3}, 1},
|
||||||
|
{{3|(1<<4)}, {20.36*1, 21.33*3}, 1},
|
||||||
|
{{3|(2<<4)}, {20.36*2, 21.33*3}, 1},
|
||||||
|
{{3|(3<<4)}, {20.36*3, 21.33*3}, 1},
|
||||||
|
{{3|(4<<4)}, {20.36*4, 21.33*3}, 1},
|
||||||
|
#ifdef PLANCK_MIT_LAYOUT
|
||||||
|
{{3|(5<<4)}, {20.36*5, 21.33*3}, 0},
|
||||||
|
{{3|(5<<4)}, {20.36*5.5, 21.33*3}, 0},
|
||||||
|
{{3|(5<<4)}, {20.36*6, 21.33*3}, 0},
|
||||||
|
#else
|
||||||
|
{{3|(5<<4)}, {20.36*5, 21.33*3}, 0},
|
||||||
|
{{0xFF}, {20.36*5.5, 21.33*3}, 0},
|
||||||
|
{{3|(6<<4)}, {20.36*6, 21.33*3}, 0},
|
||||||
|
#endif
|
||||||
|
{{3|(7<<4)}, {20.36*7, 21.33*3}, 1},
|
||||||
|
{{3|(8<<4)}, {20.36*8, 21.33*3}, 1},
|
||||||
|
{{3|(9<<4)}, {20.36*9, 21.33*3}, 1},
|
||||||
|
{{3|(10<<4)}, {20.36*10,21.33*3}, 1},
|
||||||
|
{{3|(11<<4)}, {20.36*11,21.33*3}, 1}
|
||||||
|
};
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
void matrix_init_kb(void) {
|
||||||
|
|
||||||
// Initialize LED drivers for backlight.
|
// Initialize LED drivers for backlight.
|
||||||
|
@ -65,12 +65,12 @@ uint8_t g_last_led_count = 0;
|
|||||||
|
|
||||||
void map_row_column_to_led( uint8_t row, uint8_t column, uint8_t *led_i, uint8_t *led_count)
|
void map_row_column_to_led( uint8_t row, uint8_t column, uint8_t *led_i, uint8_t *led_count)
|
||||||
{
|
{
|
||||||
is31_led led;
|
rgb_led led;
|
||||||
*led_count = 0;
|
*led_count = 0;
|
||||||
|
|
||||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
// map_index_to_led(i, &led);
|
// map_index_to_led(i, &led);
|
||||||
led = g_is31_leds[i];
|
led = g_rgb_leds[i];
|
||||||
if (row == led.matrix_co.row && column == led.matrix_co.col) {
|
if (row == led.matrix_co.row && column == led.matrix_co.col) {
|
||||||
led_i[*led_count] = i;
|
led_i[*led_count] = i;
|
||||||
(*led_count)++;
|
(*led_count)++;
|
||||||
@ -274,9 +274,9 @@ void backlight_effect_alphas_mods(void)
|
|||||||
RGB rgb1 = hsv_to_rgb( (HSV){ .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness } );
|
RGB rgb1 = hsv_to_rgb( (HSV){ .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness } );
|
||||||
RGB rgb2 = hsv_to_rgb( (HSV){ .h = g_config.color_2.h, .s = g_config.color_2.s, .v = g_config.brightness } );
|
RGB rgb2 = hsv_to_rgb( (HSV){ .h = g_config.color_2.h, .s = g_config.color_2.s, .v = g_config.brightness } );
|
||||||
|
|
||||||
is31_led led;
|
rgb_led led;
|
||||||
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
led = g_is31_leds[i];
|
led = g_rgb_leds[i];
|
||||||
if ( led.matrix_co.raw < 0xFF ) {
|
if ( led.matrix_co.raw < 0xFF ) {
|
||||||
if ( led.modifier )
|
if ( led.modifier )
|
||||||
{
|
{
|
||||||
@ -318,7 +318,7 @@ void backlight_effect_gradient_up_down(void)
|
|||||||
for ( int i=0; i<DRIVER_LED_TOTAL; i++ )
|
for ( int i=0; i<DRIVER_LED_TOTAL; i++ )
|
||||||
{
|
{
|
||||||
// map_led_to_point( i, &point );
|
// map_led_to_point( i, &point );
|
||||||
point = g_is31_leds[i].point;
|
point = g_rgb_leds[i].point;
|
||||||
// The y range will be 0..64, map this to 0..4
|
// The y range will be 0..64, map this to 0..4
|
||||||
uint8_t y = (point.y>>4);
|
uint8_t y = (point.y>>4);
|
||||||
// Relies on hue being 8-bit and wrapping
|
// Relies on hue being 8-bit and wrapping
|
||||||
@ -377,13 +377,13 @@ void backlight_effect_cycle_all(void)
|
|||||||
{
|
{
|
||||||
uint8_t offset = g_tick & 0xFF;
|
uint8_t offset = g_tick & 0xFF;
|
||||||
|
|
||||||
is31_led led;
|
rgb_led led;
|
||||||
|
|
||||||
// Relies on hue being 8-bit and wrapping
|
// Relies on hue being 8-bit and wrapping
|
||||||
for ( int i=0; i<DRIVER_LED_TOTAL; i++ )
|
for ( int i=0; i<DRIVER_LED_TOTAL; i++ )
|
||||||
{
|
{
|
||||||
// map_index_to_led(i, &led);
|
// map_index_to_led(i, &led);
|
||||||
led = g_is31_leds[i];
|
led = g_rgb_leds[i];
|
||||||
if (led.matrix_co.raw < 0xFF) {
|
if (led.matrix_co.raw < 0xFF) {
|
||||||
uint16_t offset2 = g_key_hit[i]<<2;
|
uint16_t offset2 = g_key_hit[i]<<2;
|
||||||
offset2 = (offset2<=63) ? (63-offset2) : 0;
|
offset2 = (offset2<=63) ? (63-offset2) : 0;
|
||||||
@ -401,17 +401,17 @@ void backlight_effect_cycle_left_right(void)
|
|||||||
HSV hsv = { .h = 0, .s = 255, .v = g_config.brightness };
|
HSV hsv = { .h = 0, .s = 255, .v = g_config.brightness };
|
||||||
RGB rgb;
|
RGB rgb;
|
||||||
Point point;
|
Point point;
|
||||||
is31_led led;
|
rgb_led led;
|
||||||
for ( int i=0; i<DRIVER_LED_TOTAL; i++ )
|
for ( int i=0; i<DRIVER_LED_TOTAL; i++ )
|
||||||
{
|
{
|
||||||
// map_index_to_led(i, &led);
|
// map_index_to_led(i, &led);
|
||||||
led = g_is31_leds[i];
|
led = g_rgb_leds[i];
|
||||||
if (led.matrix_co.raw < 0xFF) {
|
if (led.matrix_co.raw < 0xFF) {
|
||||||
uint16_t offset2 = g_key_hit[i]<<2;
|
uint16_t offset2 = g_key_hit[i]<<2;
|
||||||
offset2 = (offset2<=63) ? (63-offset2) : 0;
|
offset2 = (offset2<=63) ? (63-offset2) : 0;
|
||||||
|
|
||||||
// map_led_to_point( i, &point );
|
// map_led_to_point( i, &point );
|
||||||
point = g_is31_leds[i].point;
|
point = g_rgb_leds[i].point;
|
||||||
// Relies on hue being 8-bit and wrapping
|
// Relies on hue being 8-bit and wrapping
|
||||||
hsv.h = point.x + offset + offset2;
|
hsv.h = point.x + offset + offset2;
|
||||||
rgb = hsv_to_rgb( hsv );
|
rgb = hsv_to_rgb( hsv );
|
||||||
@ -426,17 +426,17 @@ void backlight_effect_cycle_up_down(void)
|
|||||||
HSV hsv = { .h = 0, .s = 255, .v = g_config.brightness };
|
HSV hsv = { .h = 0, .s = 255, .v = g_config.brightness };
|
||||||
RGB rgb;
|
RGB rgb;
|
||||||
Point point;
|
Point point;
|
||||||
is31_led led;
|
rgb_led led;
|
||||||
for ( int i=0; i<DRIVER_LED_TOTAL; i++ )
|
for ( int i=0; i<DRIVER_LED_TOTAL; i++ )
|
||||||
{
|
{
|
||||||
// map_index_to_led(i, &led);
|
// map_index_to_led(i, &led);
|
||||||
led = g_is31_leds[i];
|
led = g_rgb_leds[i];
|
||||||
if (led.matrix_co.raw < 0xFF) {
|
if (led.matrix_co.raw < 0xFF) {
|
||||||
uint16_t offset2 = g_key_hit[i]<<2;
|
uint16_t offset2 = g_key_hit[i]<<2;
|
||||||
offset2 = (offset2<=63) ? (63-offset2) : 0;
|
offset2 = (offset2<=63) ? (63-offset2) : 0;
|
||||||
|
|
||||||
// map_led_to_point( i, &point );
|
// map_led_to_point( i, &point );
|
||||||
point = g_is31_leds[i].point;
|
point = g_rgb_leds[i].point;
|
||||||
// Relies on hue being 8-bit and wrapping
|
// Relies on hue being 8-bit and wrapping
|
||||||
hsv.h = point.y + offset + offset2;
|
hsv.h = point.y + offset + offset2;
|
||||||
rgb = hsv_to_rgb( hsv );
|
rgb = hsv_to_rgb( hsv );
|
||||||
@ -449,9 +449,9 @@ void backlight_effect_cycle_up_down(void)
|
|||||||
void backlight_effect_dual_beacon(void) {
|
void backlight_effect_dual_beacon(void) {
|
||||||
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
||||||
RGB rgb;
|
RGB rgb;
|
||||||
is31_led led;
|
rgb_led led;
|
||||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
led = g_is31_leds[i];
|
led = g_rgb_leds[i];
|
||||||
hsv.h = ((led.point.y - 32.0)* cos(g_tick * PI / 128) / 32 + (led.point.x - 112.0) * sin(g_tick * PI / 128) / (112)) * (g_config.color_2.h - g_config.color_1.h) + g_config.color_1.h;
|
hsv.h = ((led.point.y - 32.0)* cos(g_tick * PI / 128) / 32 + (led.point.x - 112.0) * sin(g_tick * PI / 128) / (112)) * (g_config.color_2.h - g_config.color_1.h) + g_config.color_1.h;
|
||||||
rgb = hsv_to_rgb( hsv );
|
rgb = hsv_to_rgb( hsv );
|
||||||
backlight_set_color( i, rgb.r, rgb.g, rgb.b );
|
backlight_set_color( i, rgb.r, rgb.g, rgb.b );
|
||||||
@ -461,9 +461,9 @@ void backlight_effect_dual_beacon(void) {
|
|||||||
void backlight_effect_rainbow_beacon(void) {
|
void backlight_effect_rainbow_beacon(void) {
|
||||||
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
||||||
RGB rgb;
|
RGB rgb;
|
||||||
is31_led led;
|
rgb_led led;
|
||||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
led = g_is31_leds[i];
|
led = g_rgb_leds[i];
|
||||||
hsv.h = 1.5 * (led.point.y - 32.0)* cos(g_tick * PI / 128) + 1.5 * (led.point.x - 112.0) * sin(g_tick * PI / 128) + g_config.color_1.h;
|
hsv.h = 1.5 * (led.point.y - 32.0)* cos(g_tick * PI / 128) + 1.5 * (led.point.x - 112.0) * sin(g_tick * PI / 128) + g_config.color_1.h;
|
||||||
rgb = hsv_to_rgb( hsv );
|
rgb = hsv_to_rgb( hsv );
|
||||||
backlight_set_color( i, rgb.r, rgb.g, rgb.b );
|
backlight_set_color( i, rgb.r, rgb.g, rgb.b );
|
||||||
@ -473,9 +473,9 @@ void backlight_effect_rainbow_beacon(void) {
|
|||||||
void backlight_effect_rainbow_pinwheels(void) {
|
void backlight_effect_rainbow_pinwheels(void) {
|
||||||
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
||||||
RGB rgb;
|
RGB rgb;
|
||||||
is31_led led;
|
rgb_led led;
|
||||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
led = g_is31_leds[i];
|
led = g_rgb_leds[i];
|
||||||
hsv.h = 2 * (led.point.y - 32.0)* cos(g_tick * PI / 128) + 2 * (66 - abs(led.point.x - 112.0)) * sin(g_tick * PI / 128) + g_config.color_1.h;
|
hsv.h = 2 * (led.point.y - 32.0)* cos(g_tick * PI / 128) + 2 * (66 - abs(led.point.x - 112.0)) * sin(g_tick * PI / 128) + g_config.color_1.h;
|
||||||
rgb = hsv_to_rgb( hsv );
|
rgb = hsv_to_rgb( hsv );
|
||||||
backlight_set_color( i, rgb.r, rgb.g, rgb.b );
|
backlight_set_color( i, rgb.r, rgb.g, rgb.b );
|
||||||
@ -485,9 +485,9 @@ void backlight_effect_rainbow_pinwheels(void) {
|
|||||||
void backlight_effect_rainbow_moving_chevron(void) {
|
void backlight_effect_rainbow_moving_chevron(void) {
|
||||||
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
||||||
RGB rgb;
|
RGB rgb;
|
||||||
is31_led led;
|
rgb_led led;
|
||||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
led = g_is31_leds[i];
|
led = g_rgb_leds[i];
|
||||||
// uint8_t r = g_tick;
|
// uint8_t r = g_tick;
|
||||||
uint8_t r = 32;
|
uint8_t r = 32;
|
||||||
hsv.h = 1.5 * abs(led.point.y - 32.0)* sin(r * PI / 128) + 1.5 * (led.point.x - (g_tick / 256.0 * 224)) * cos(r * PI / 128) + g_config.color_1.h;
|
hsv.h = 1.5 * abs(led.point.y - 32.0)* sin(r * PI / 128) + 1.5 * (led.point.x - (g_tick / 256.0 * 224)) * cos(r * PI / 128) + g_config.color_1.h;
|
||||||
@ -526,14 +526,14 @@ void backlight_effect_multisplash(void) {
|
|||||||
// if (g_any_key_hit < 0xFF) {
|
// if (g_any_key_hit < 0xFF) {
|
||||||
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
||||||
RGB rgb;
|
RGB rgb;
|
||||||
is31_led led;
|
rgb_led led;
|
||||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
led = g_is31_leds[i];
|
led = g_rgb_leds[i];
|
||||||
uint16_t c = 0, d = 0;
|
uint16_t c = 0, d = 0;
|
||||||
is31_led last_led;
|
rgb_led last_led;
|
||||||
// if (g_last_led_count) {
|
// if (g_last_led_count) {
|
||||||
for (uint8_t last_i = 0; last_i < g_last_led_count; last_i++) {
|
for (uint8_t last_i = 0; last_i < g_last_led_count; last_i++) {
|
||||||
last_led = g_is31_leds[g_last_led_hit[last_i]];
|
last_led = g_rgb_leds[g_last_led_hit[last_i]];
|
||||||
uint16_t dist = (uint16_t)sqrt(pow(led.point.x - last_led.point.x, 2) + pow(led.point.y - last_led.point.y, 2));
|
uint16_t dist = (uint16_t)sqrt(pow(led.point.x - last_led.point.x, 2) + pow(led.point.y - last_led.point.y, 2));
|
||||||
uint16_t effect = (g_key_hit[g_last_led_hit[last_i]] << 2) - dist;
|
uint16_t effect = (g_key_hit[g_last_led_hit[last_i]] << 2) - dist;
|
||||||
c += MIN(MAX(effect, 0), 255);
|
c += MIN(MAX(effect, 0), 255);
|
||||||
@ -563,14 +563,14 @@ void backlight_effect_solid_multisplash(void) {
|
|||||||
// if (g_any_key_hit < 0xFF) {
|
// if (g_any_key_hit < 0xFF) {
|
||||||
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
||||||
RGB rgb;
|
RGB rgb;
|
||||||
is31_led led;
|
rgb_led led;
|
||||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
led = g_is31_leds[i];
|
led = g_rgb_leds[i];
|
||||||
uint16_t d = 0;
|
uint16_t d = 0;
|
||||||
is31_led last_led;
|
rgb_led last_led;
|
||||||
// if (g_last_led_count) {
|
// if (g_last_led_count) {
|
||||||
for (uint8_t last_i = 0; last_i < g_last_led_count; last_i++) {
|
for (uint8_t last_i = 0; last_i < g_last_led_count; last_i++) {
|
||||||
last_led = g_is31_leds[g_last_led_hit[last_i]];
|
last_led = g_rgb_leds[g_last_led_hit[last_i]];
|
||||||
uint16_t dist = (uint16_t)sqrt(pow(led.point.x - last_led.point.x, 2) + pow(led.point.y - last_led.point.y, 2));
|
uint16_t dist = (uint16_t)sqrt(pow(led.point.x - last_led.point.x, 2) + pow(led.point.y - last_led.point.y, 2));
|
||||||
uint16_t effect = (g_key_hit[g_last_led_hit[last_i]] << 2) - dist;
|
uint16_t effect = (g_key_hit[g_last_led_hit[last_i]] << 2) - dist;
|
||||||
d += 255 - MIN(MAX(effect, 0), 255);
|
d += 255 - MIN(MAX(effect, 0), 255);
|
||||||
|
@ -24,6 +24,26 @@
|
|||||||
#include "is31fl3731.h"
|
#include "is31fl3731.h"
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
|
typedef struct Point {
|
||||||
|
uint8_t x;
|
||||||
|
uint8_t y;
|
||||||
|
} __attribute__((packed)) Point;
|
||||||
|
|
||||||
|
typedef struct rgb_led {
|
||||||
|
union {
|
||||||
|
uint8_t raw;
|
||||||
|
struct {
|
||||||
|
uint8_t row:4; // 16 max
|
||||||
|
uint8_t col:4; // 16 max
|
||||||
|
};
|
||||||
|
} matrix_co;
|
||||||
|
Point point;
|
||||||
|
uint8_t modifier:1;
|
||||||
|
} __attribute__((packed)) rgb_led;
|
||||||
|
|
||||||
|
|
||||||
|
extern const rgb_led g_rgb_leds[DRIVER_LED_TOTAL];
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
HSV color;
|
HSV color;
|
||||||
|
Reference in New Issue
Block a user