@ -324,8 +324,8 @@ void rgb_matrix_raindrops(bool initialize) {
HSV hsv ;
RGB rgb ;
// Change one LED every tick
uint8_t led_to_change = ( g_tick & 0x000 ) = = 0 ? rand ( ) % DRIVER_LED_TOTAL : 255 ;
// Change one LED every tick , make sure speed is not 0
uint8_t led_to_change = ( g_tick & ( 0x0A / ( rgb_matrix_config . speed = = 0 ? 1 : rgb_matrix_config . speed ) ) ) = = 0 ? rand ( ) % ( DRIVER_LED_TOTAL ) : 255 ;
for ( int i = 0 ; i < DRIVER_LED_TOTAL ; i + + )
{
@ -432,7 +432,7 @@ void rgb_matrix_rainbow_beacon(void) {
rgb_led led ;
for ( uint8_t i = 0 ; i < DRIVER_LED_TOTAL ; 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 ) + rgb_matrix_config . hue ;
hsv . h = ( 1.5 * ( rgb_matrix_config . speed = = 0 ? 1 : rgb_matrix_config . speed ) ) * ( led . point . y - 32.0 ) * cos ( g_tick * PI / 128 ) + ( 1.5 * ( rgb_matrix_config . speed = = 0 ? 1 : rgb_matrix_config . speed ) ) * ( led . point . x - 112.0 ) * sin ( g_tick * PI / 128 ) + rgb_matrix_config . hue ;
rgb = hsv_to_rgb ( hsv ) ;
rgb_matrix_set_color ( i , rgb . r , rgb . g , rgb . b ) ;
}
@ -444,7 +444,7 @@ void rgb_matrix_rainbow_pinwheels(void) {
rgb_led led ;
for ( uint8_t i = 0 ; i < DRIVER_LED_TOTAL ; 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 ) + rgb_matrix_config . hue ;
hsv . h = ( 2 * ( rgb_matrix_config . speed = = 0 ? 1 : rgb_matrix_config . speed ) ) * ( led . point . y - 32.0 ) * cos ( g_tick * PI / 128 ) + ( 2 * ( rgb_matrix_config . speed = = 0 ? 1 : rgb_matrix_config . speed ) ) * ( 66 - abs ( led . point . x - 112.0 ) ) * sin ( g_tick * PI / 128 ) + rgb_matrix_config . hue ;
rgb = hsv_to_rgb ( hsv ) ;
rgb_matrix_set_color ( i , rgb . r , rgb . g , rgb . b ) ;
}
@ -458,7 +458,7 @@ void rgb_matrix_rainbow_moving_chevron(void) {
led = g_rgb_leds [ i ] ;
// uint8_t r = g_tick;
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 ) + rgb_matrix_config . hue ;
hsv . h = ( 1.5 * ( rgb_matrix_config . speed = = 0 ? 1 : rgb_matrix_config . speed ) ) * abs ( led . point . y - 32.0 ) * sin ( r * PI / 128 ) + ( 1.5 * ( rgb_matrix_config . speed = = 0 ? 1 : rgb_matrix_config . speed ) ) * ( led . point . x - ( g_tick / 256.0 * 224 ) ) * cos ( r * PI / 128 ) + rgb_matrix_config . hue ;
rgb = hsv_to_rgb ( hsv ) ;
rgb_matrix_set_color ( i , rgb . r , rgb . g , rgb . b ) ;
}
@ -469,8 +469,8 @@ void rgb_matrix_jellybean_raindrops( bool initialize ) {
HSV hsv ;
RGB rgb ;
// Change one LED every tick
uint8_t led_to_change = ( g_tick & 0x000 ) = = 0 ? rand ( ) % DRIVER_LED_TOTAL : 255 ;
// Change one LED every tick , make sure speed is not 0
uint8_t led_to_change = ( g_tick & ( 0x0A / ( rgb_matrix_config . speed = = 0 ? 1 : rgb_matrix_config . speed ) ) ) = = 0 ? rand ( ) % ( DRIVER_LED_TOTAL ) : 255 ;
for ( int i = 0 ; i < DRIVER_LED_TOTAL ; i + + )
{
@ -577,8 +577,10 @@ void rgb_matrix_custom(void) {
}
void rgb_matrix_task ( void ) {
static uint8_t toggle_enable_last = 255 ;
if ( ! rgb_matrix_config . enable ) {
rgb_matrix_all_off ( ) ;
toggle_enable_last = rgb_matrix_config . enable ;
return ;
}
// delay 1 second before driving LEDs or doing anything else
@ -618,8 +620,9 @@ void rgb_matrix_task(void) {
// detect change in effect, so each effect can
// have an optional initialization.
static uint8_t effect_last = 255 ;
bool initialize = effect ! = effect_last ;
bool initialize = ( effect ! = effect_last ) | | ( rgb_matrix_config . enable ! = toggle_enable_last ) ;
effect_last = effect ;
toggle_enable_last = rgb_matrix_config . enable ;
// this gets ticked at 20 Hz.
// each effect can opt to do calculations
@ -628,9 +631,6 @@ void rgb_matrix_task(void) {
case RGB_MATRIX_SOLID_COLOR :
rgb_matrix_solid_color ( ) ;
break ;
case RGB_MATRIX_SOLID_REACTIVE :
rgb_matrix_solid_reactive ( ) ;
break ;
case RGB_MATRIX_ALPHAS_MODS :
rgb_matrix_alphas_mods ( ) ;
break ;
@ -665,6 +665,9 @@ void rgb_matrix_task(void) {
rgb_matrix_jellybean_raindrops ( initialize ) ;
break ;
# ifdef RGB_MATRIX_KEYPRESSES
case RGB_MATRIX_SOLID_REACTIVE :
rgb_matrix_solid_reactive ( ) ;
break ;
case RGB_MATRIX_SPLASH :
rgb_matrix_splash ( ) ;
break ;
@ -830,8 +833,8 @@ void rgblight_step(void) {
void rgblight_step_reverse ( void ) {
rgb_matrix_config . mode - - ;
if ( rgb_matrix_config . mode < = 1 )
rgb_matrix_config . mode = ( RGB_MATRIX_EFFECT_MAX - 1 ) ;
if ( rgb_matrix_config . mode < 1 )
rgb_matrix_config . mode = RGB_MATRIX_EFFECT_MAX - 1 ;
eeconfig_update_rgb_matrix ( rgb_matrix_config . raw ) ;
}