Эх сурвалжийг харах

Make digital rain RGB matrix effect #define configurable.

Daniel Shields 6 жил өмнө
parent
commit
da6c58175a

+ 1 - 0
docs/feature_rgb_matrix.md

@@ -140,6 +140,7 @@ These are the effects that are currently available:
 	    RGB_MATRIX_RAINBOW_PINWHEELS,
 	    RGB_MATRIX_RAINBOW_MOVING_CHEVRON,
 	    RGB_MATRIX_JELLYBEAN_RAINDROPS,
+	    RGB_MATRIX_DIGITAL_RAIN,
 	#ifdef RGB_MATRIX_KEYPRESSES
 	    RGB_MATRIX_SOLID_REACTIVE,
 	    RGB_MATRIX_SPLASH,

+ 1 - 0
keyboards/model01/keymaps/dshields/config.h

@@ -1,5 +1,6 @@
 #pragma once
 
+#define RGB_DIGITAL_RAIN_DROPS    18
 #define USB_MAX_POWER_CONSUMPTION 100
 #define ONESHOT_TAP_TOGGLE        2
 #define ONESHOT_TIMEOUT           3000

+ 1 - 0
keyboards/planck/keymaps/dshields/config.h

@@ -1,5 +1,6 @@
 #pragma once
 
+#define RGB_DIGITAL_RAIN_DROPS    24
 #define USB_MAX_POWER_CONSUMPTION 100
 #define ONESHOT_TAP_TOGGLE        2
 #define ONESHOT_TIMEOUT           3000

+ 6 - 2
quantum/rgb_matrix.c

@@ -50,6 +50,11 @@ rgb_config_t rgb_matrix_config;
     #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
 #endif
 
+#ifndef RGB_DIGITAL_RAIN_DROPS
+    // lower the number for denser effect/wider keyboard
+    #define RGB_DIGITAL_RAIN_DROPS 24
+#endif
+
 bool g_suspend_state = false;
 
 // Global tick at 20 Hz
@@ -466,7 +471,6 @@ void rgb_matrix_jellybean_raindrops( bool initialize ) {
 void rgb_matrix_digital_rain( const bool initialize ) {
     // algorithm ported from https://github.com/tremby/Kaleidoscope-LEDEffect-DigitalRain
     const uint8_t drop_ticks           = 28;
-    const uint8_t new_drop_probability = 24;
     const uint8_t pure_green_intensity = 0xd0;
     const uint8_t max_brightness_boost = 0xc0;
     const uint8_t max_intensity        = 0xff;
@@ -481,7 +485,7 @@ void rgb_matrix_digital_rain( const bool initialize ) {
     }
     for (uint8_t col = 0; col < MATRIX_COLS; col++) {
         for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-            if (row == 0 && drop == 0 && rand() < RAND_MAX / new_drop_probability) {
+            if (row == 0 && drop == 0 && rand() < RAND_MAX / RGB_DIGITAL_RAIN_DROPS) {
                 // top row, pixels have just fallen and we're
                 // making a new rain drop in this column
                 map[col][row] = max_intensity;