Browse Source

Add option to arrange Neopixel sets in series (#18992)

ellensp 3 years ago
parent
commit
5038cddfd5
No account linked to committer's email address

+ 1
- 0
Marlin/Configuration.h View File

2354
   #define NEOPIXEL_PIN     4       // LED driving pin
2354
   #define NEOPIXEL_PIN     4       // LED driving pin
2355
   //#define NEOPIXEL2_TYPE NEOPIXEL_TYPE
2355
   //#define NEOPIXEL2_TYPE NEOPIXEL_TYPE
2356
   //#define NEOPIXEL2_PIN    5
2356
   //#define NEOPIXEL2_PIN    5
2357
+  #define NEOPIXEL2_INSERIES false // The default behaviour is 'false' with neopixel2 in parallel
2357
   #define NEOPIXEL_PIXELS 30       // Number of LEDs in the strip, larger of 2 strips if 2 neopixel strips are used
2358
   #define NEOPIXEL_PIXELS 30       // Number of LEDs in the strip, larger of 2 strips if 2 neopixel strips are used
2358
   #define NEOPIXEL_IS_SEQUENTIAL   // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
2359
   #define NEOPIXEL_IS_SEQUENTIAL   // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
2359
   #define NEOPIXEL_BRIGHTNESS 127  // Initial brightness (0-255)
2360
   #define NEOPIXEL_BRIGHTNESS 127  // Initial brightness (0-255)

+ 1
- 1
Marlin/src/feature/leds/neopixel.cpp View File

38
 int8_t Marlin_NeoPixel::neoindex;
38
 int8_t Marlin_NeoPixel::neoindex;
39
 
39
 
40
 Adafruit_NeoPixel Marlin_NeoPixel::adaneo1(NEOPIXEL_PIXELS, NEOPIXEL_PIN, NEOPIXEL_TYPE + NEO_KHZ800)
40
 Adafruit_NeoPixel Marlin_NeoPixel::adaneo1(NEOPIXEL_PIXELS, NEOPIXEL_PIN, NEOPIXEL_TYPE + NEO_KHZ800)
41
-  #if MULTIPLE_NEOPIXEL_TYPES
41
+  #if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES)
42
     , Marlin_NeoPixel::adaneo2(NEOPIXEL_PIXELS, NEOPIXEL2_PIN, NEOPIXEL2_TYPE + NEO_KHZ800)
42
     , Marlin_NeoPixel::adaneo2(NEOPIXEL_PIXELS, NEOPIXEL2_PIN, NEOPIXEL2_TYPE + NEO_KHZ800)
43
   #endif
43
   #endif
44
 ;
44
 ;

+ 20
- 7
Marlin/src/feature/leds/neopixel.h View File

61
 class Marlin_NeoPixel {
61
 class Marlin_NeoPixel {
62
 private:
62
 private:
63
   static Adafruit_NeoPixel adaneo1
63
   static Adafruit_NeoPixel adaneo1
64
-    #if MULTIPLE_NEOPIXEL_TYPES
64
+    #if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES)
65
       , adaneo2
65
       , adaneo2
66
     #endif
66
     #endif
67
   ;
67
   ;
82
 
82
 
83
   static inline void begin() {
83
   static inline void begin() {
84
     adaneo1.begin();
84
     adaneo1.begin();
85
-    TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.begin());
85
+    #if ENABLED(NEOPIXEL2_INSERIES)
86
+      adaneo2.begin();
87
+    #else
88
+      TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.begin());
89
+    #endif
86
   }
90
   }
87
 
91
 
88
   static inline void set_pixel_color(const uint16_t n, const uint32_t c) {
92
   static inline void set_pixel_color(const uint16_t n, const uint32_t c) {
89
-    adaneo1.setPixelColor(n, c);
90
-    TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.setPixelColor(n, c));
93
+    #if ENABLED(NEOPIXEL2_INSERIES)
94
+      if (n >= NEOPIXEL_PIXELS) adaneo2.setPixelColor(n - (NEOPIXEL_PIXELS), c);
95
+      else adaneo1.setPixelColor(n, c);
96
+    #else
97
+      adaneo1.setPixelColor(n, c);
98
+      TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.setPixelColor(n, c));
99
+    #endif
91
   }
100
   }
92
 
101
 
93
   static inline void set_brightness(const uint8_t b) {
102
   static inline void set_brightness(const uint8_t b) {
94
     adaneo1.setBrightness(b);
103
     adaneo1.setBrightness(b);
95
-    TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.setBrightness(b));
104
+    #if ENABLED(NEOPIXEL2_INSERIES)
105
+      adaneo2.setBrightness(b);
106
+    #else
107
+      TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.setBrightness(b));
108
+    #endif
96
   }
109
   }
97
 
110
 
98
   static inline void show() {
111
   static inline void show() {
99
     adaneo1.show();
112
     adaneo1.show();
100
     #if PIN_EXISTS(NEOPIXEL2)
113
     #if PIN_EXISTS(NEOPIXEL2)
101
-      #if MULTIPLE_NEOPIXEL_TYPES
114
+      #if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES)
102
         adaneo2.show();
115
         adaneo2.show();
103
       #else
116
       #else
104
         adaneo1.setPin(NEOPIXEL2_PIN);
117
         adaneo1.setPin(NEOPIXEL2_PIN);
113
   #endif
126
   #endif
114
 
127
 
115
   // Accessors
128
   // Accessors
116
-  static inline uint16_t pixels() { return adaneo1.numPixels(); }
129
+  static inline uint16_t pixels() { TERN(NEOPIXEL2_INSERIES, return adaneo1.numPixels() * 2, return adaneo1.numPixels()); }
117
   static inline uint8_t brightness() { return adaneo1.getBrightness(); }
130
   static inline uint8_t brightness() { return adaneo1.getBrightness(); }
118
   static inline uint32_t Color(uint8_t r, uint8_t g, uint8_t b, uint8_t w) {
131
   static inline uint32_t Color(uint8_t r, uint8_t g, uint8_t b, uint8_t w) {
119
     return adaneo1.Color(r, g, b, w);
132
     return adaneo1.Color(r, g, b, w);

Loading…
Cancel
Save