ソースを参照

Independent Neopixel option (#19115)

Zachary Annand 3年前
コミット
97ec6c1be6
コミッターのメールアドレスに関連付けられたアカウントが存在しません

+ 11
- 2
Marlin/Configuration.h ファイルの表示

@@ -2362,12 +2362,21 @@
2362 2362
   #define NEOPIXEL_PIN     4       // LED driving pin
2363 2363
   //#define NEOPIXEL2_TYPE NEOPIXEL_TYPE
2364 2364
   //#define NEOPIXEL2_PIN    5
2365
-  //#define NEOPIXEL2_INSERIES     // Default behavior is NeoPixel 2 in parallel
2366
-  #define NEOPIXEL_PIXELS 30       // Number of LEDs in the strip, larger of 2 strips if 2 NeoPixel strips are used
2365
+  #define NEOPIXEL_PIXELS 30       // Number of LEDs in the strip. (Longest strip when NEOPIXEL2_SEPARATE is disabled.)
2367 2366
   #define NEOPIXEL_IS_SEQUENTIAL   // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
2368 2367
   #define NEOPIXEL_BRIGHTNESS 127  // Initial brightness (0-255)
2369 2368
   //#define NEOPIXEL_STARTUP_TEST  // Cycle through colors at startup
2370 2369
 
2370
+  // Support for second Adafruit NeoPixel LED driver controlled with M150 S1 ...
2371
+  //#define NEOPIXEL2_SEPARATE
2372
+  #if ENABLED(NEOPIXEL2_SEPARATE)
2373
+    #define NEOPIXEL2_PIXELS      15  // Number of LEDs in the second strip
2374
+    #define NEOPIXEL2_BRIGHTNESS 127  // Initial brightness (0-255)
2375
+    #define NEOPIXEL2_STARTUP_TEST    // Cycle through colors at startup
2376
+  #else
2377
+    //#define NEOPIXEL2_INSERIES      // Default behavior is NeoPixel 2 in parallel
2378
+  #endif
2379
+
2371 2380
   // Use a single NeoPixel LED for static (background) lighting
2372 2381
   //#define NEOPIXEL_BKGD_LED_INDEX  0               // Index of the LED to use
2373 2382
   //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W

+ 9
- 0
Marlin/Configuration_adv.h ファイルの表示

@@ -1065,6 +1065,7 @@
1065 1065
   //#define LED_CONTROL_MENU
1066 1066
   #if ENABLED(LED_CONTROL_MENU)
1067 1067
     #define LED_COLOR_PRESETS                 // Enable the Preset Color menu option
1068
+    //#define NEO2_COLOR_PRESETS              // Enable a second NeoPixel Preset Color menu option
1068 1069
     #if ENABLED(LED_COLOR_PRESETS)
1069 1070
       #define LED_USER_PRESET_RED        255  // User defined RED value
1070 1071
       #define LED_USER_PRESET_GREEN      128  // User defined GREEN value
@@ -1073,6 +1074,14 @@
1073 1074
       #define LED_USER_PRESET_BRIGHTNESS 255  // User defined intensity
1074 1075
       //#define LED_USER_PRESET_STARTUP       // Have the printer display the user preset color on startup
1075 1076
     #endif
1077
+    #if ENABLED(NEO2_COLOR_PRESETS)
1078
+      #define NEO2_USER_PRESET_RED        255  // User defined RED value
1079
+      #define NEO2_USER_PRESET_GREEN      128  // User defined GREEN value
1080
+      #define NEO2_USER_PRESET_BLUE         0  // User defined BLUE value
1081
+      #define NEO2_USER_PRESET_WHITE      255  // User defined WHITE value
1082
+      #define NEO2_USER_PRESET_BRIGHTNESS 255  // User defined intensity
1083
+      //#define NEO2_USER_PRESET_STARTUP       // Have the printer display the user preset color on startup for the second strip
1084
+    #endif
1076 1085
   #endif
1077 1086
 
1078 1087
 #endif // HAS_LCD_MENU

+ 4
- 0
Marlin/src/MarlinCore.cpp ファイルの表示

@@ -995,6 +995,10 @@ void setup() {
995 995
     SETUP_RUN(leds.setup());
996 996
   #endif
997 997
 
998
+  #if ENABLED(NEOPIXEL2_SEPARATE)
999
+    SETUP_RUN(leds2.setup());
1000
+  #endif
1001
+
998 1002
   #if ENABLED(USE_CONTROLLER_FAN)     // Set up fan controller to initialize also the default configurations.
999 1003
     SETUP_RUN(controllerFan.setup());
1000 1004
   #endif

+ 40
- 11
Marlin/src/feature/leds/leds.cpp ファイルの表示

@@ -44,11 +44,8 @@
44 44
 
45 45
 #if ENABLED(LED_COLOR_PRESETS)
46 46
   const LEDColor LEDLights::defaultLEDColor = MakeLEDColor(
47
-    LED_USER_PRESET_RED,
48
-    LED_USER_PRESET_GREEN,
49
-    LED_USER_PRESET_BLUE,
50
-    LED_USER_PRESET_WHITE,
51
-    LED_USER_PRESET_BRIGHTNESS
47
+    LED_USER_PRESET_RED, LED_USER_PRESET_GREEN, LED_USER_PRESET_BLUE,
48
+    LED_USER_PRESET_WHITE, LED_USER_PRESET_BRIGHTNESS
52 49
   );
53 50
 #endif
54 51
 
@@ -117,12 +114,13 @@ void LEDLights::set_color(const LEDColor &incol
117 114
 
118 115
     // This variant uses 3-4 separate pins for the RGB(W) components.
119 116
     // If the pins can do PWM then their intensity will be set.
120
-    #define UPDATE_RGBW(C,c) do { if (PWM_PIN(RGB_LED_##C##_PIN)) \
117
+    #define UPDATE_RGBW(C,c) do {                       \
118
+      if (PWM_PIN(RGB_LED_##C##_PIN))                   \
121 119
         analogWrite(pin_t(RGB_LED_##C##_PIN), incol.c); \
122
-      else WRITE(RGB_LED_##C##_PIN, incol.c ? HIGH : LOW); }while(0)
123
-    UPDATE_RGBW(R,r);
124
-    UPDATE_RGBW(G,g);
125
-    UPDATE_RGBW(B,b);
120
+      else                                              \
121
+        WRITE(RGB_LED_##C##_PIN, incol.c ? HIGH : LOW); \
122
+    }while(0)
123
+    UPDATE_RGBW(R,r); UPDATE_RGBW(G,g); UPDATE_RGBW(B,b);
126 124
     #if ENABLED(RGBW_LED)
127 125
       UPDATE_RGBW(W,w);
128 126
     #endif
@@ -158,4 +156,35 @@ void LEDLights::set_color(const LEDColor &incol
158 156
 
159 157
 #endif
160 158
 
161
-#endif // HAS_COLOR_LEDS
159
+#if ENABLED(NEOPIXEL2_SEPARATE)
160
+
161
+  #if ENABLED(NEO2_COLOR_PRESETS)
162
+    const LEDColor LEDLights2::defaultLEDColor = MakeLEDColor(
163
+      NEO2_USER_PRESET_RED, NEO2_USER_PRESET_GREEN, NEO2_USER_PRESET_BLUE,
164
+      NEO2_USER_PRESET_WHITE, NEO2_USER_PRESET_BRIGHTNESS
165
+    );
166
+  #endif
167
+
168
+  #if ENABLED(LED_CONTROL_MENU)
169
+    LEDColor LEDLights2::color;
170
+    bool LEDLights2::lights_on;
171
+  #endif
172
+
173
+  LEDLights2 leds2;
174
+
175
+  void LEDLights2::setup() {
176
+    neo2.init();
177
+    TERN_(NEO2_USER_PRESET_STARTUP, set_default());
178
+  }
179
+
180
+  void LEDLights2::set_color(const LEDColor &incol) {
181
+    const uint32_t neocolor = LEDColorWhite() == incol
182
+                            ? neo2.Color(NEO2_WHITE)
183
+                            : neo2.Color(incol.r, incol.g, incol.b, incol.w);
184
+    neo2.set_brightness(incol.i);
185
+    neo2.set_color(neocolor);
186
+  }
187
+
188
+#endif  // NEOPIXEL2_SEPARATE
189
+
190
+#endif  // HAS_COLOR_LEDS

+ 42
- 3
Marlin/src/feature/leds/leds.h ファイルの表示

@@ -155,11 +155,9 @@ public:
155 155
   static inline void set_color(uint8_t r, uint8_t g, uint8_t b
156 156
     #if HAS_WHITE_LED
157 157
       , uint8_t w=0
158
-      #if ENABLED(NEOPIXEL_LED)
159
-        , uint8_t i=NEOPIXEL_BRIGHTNESS
160
-      #endif
161 158
     #endif
162 159
     #if ENABLED(NEOPIXEL_LED)
160
+      , uint8_t i=NEOPIXEL_BRIGHTNESS
163 161
       , bool isSequence=false
164 162
     #endif
165 163
   ) {
@@ -212,3 +210,44 @@ public:
212 210
 };
213 211
 
214 212
 extern LEDLights leds;
213
+
214
+#if ENABLED(NEOPIXEL2_SEPARATE)
215
+
216
+  class LEDLights2 {
217
+  public:
218
+    LEDLights2() {}
219
+
220
+    static void setup(); // init()
221
+
222
+    static void set_color(const LEDColor &color);
223
+
224
+    inline void set_color(uint8_t r, uint8_t g, uint8_t b, uint8_t w=0, uint8_t i=NEOPIXEL2_BRIGHTNESS) {
225
+      set_color(MakeLEDColor(r, g, b, w, i));
226
+    }
227
+
228
+    static inline void set_off()   { set_color(LEDColorOff()); }
229
+    static inline void set_green() { set_color(LEDColorGreen()); }
230
+    static inline void set_white() { set_color(LEDColorWhite()); }
231
+
232
+    #if ENABLED(NEO2_COLOR_PRESETS)
233
+      static const LEDColor defaultLEDColor;
234
+      static inline void set_default()  { set_color(defaultLEDColor); }
235
+      static inline void set_red()      { set_color(LEDColorRed()); }
236
+      static inline void set_orange()   { set_color(LEDColorOrange()); }
237
+      static inline void set_yellow()   { set_color(LEDColorYellow()); }
238
+      static inline void set_blue()     { set_color(LEDColorBlue()); }
239
+      static inline void set_indigo()   { set_color(LEDColorIndigo()); }
240
+      static inline void set_violet()   { set_color(LEDColorViolet()); }
241
+    #endif
242
+
243
+    #if ENABLED(LED_CONTROL_MENU)
244
+      static LEDColor color; // last non-off color
245
+      static bool lights_on; // the last set color was "on"
246
+      static void toggle();  // swap "off" with color
247
+      static inline void update() { set_color(color); }
248
+    #endif
249
+  };
250
+
251
+  extern LEDLights2 leds2;
252
+
253
+#endif // NEOPIXEL2_SEPARATE

+ 51
- 2
Marlin/src/feature/leds/neopixel.cpp ファイルの表示

@@ -30,7 +30,7 @@
30 30
 
31 31
 #include "neopixel.h"
32 32
 
33
-#if ENABLED(NEOPIXEL_STARTUP_TEST)
33
+#if EITHER(NEOPIXEL_STARTUP_TEST, NEOPIXEL2_STARTUP_TEST)
34 34
   #include "../../core/utility.h"
35 35
 #endif
36 36
 
@@ -38,7 +38,7 @@ Marlin_NeoPixel neo;
38 38
 int8_t Marlin_NeoPixel::neoindex;
39 39
 
40 40
 Adafruit_NeoPixel Marlin_NeoPixel::adaneo1(NEOPIXEL_PIXELS, NEOPIXEL_PIN, NEOPIXEL_TYPE + NEO_KHZ800)
41
-  #if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES)
41
+  #if CONJOINED_NEOPIXEL
42 42
     , Marlin_NeoPixel::adaneo2(NEOPIXEL_PIXELS, NEOPIXEL2_PIN, NEOPIXEL2_TYPE + NEO_KHZ800)
43 43
   #endif
44 44
 ;
@@ -120,4 +120,53 @@ bool Marlin_NeoPixel::set_led_color(const uint8_t r, const uint8_t g, const uint
120 120
 }
121 121
 #endif
122 122
 
123
+#if ENABLED(NEOPIXEL2_SEPARATE)
124
+
125
+  Marlin_NeoPixel2 neo2;
126
+
127
+  int8_t Marlin_NeoPixel2::neoindex;
128
+  Adafruit_NeoPixel Marlin_NeoPixel2::adaneo(NEOPIXEL2_PIXELS, NEOPIXEL2_PIN, NEOPIXEL2_TYPE);
129
+
130
+  void Marlin_NeoPixel2::set_color(const uint32_t color) {
131
+    if (neoindex >= 0) {
132
+      set_pixel_color(neoindex, color);
133
+      neoindex = -1;
134
+    }
135
+    else {
136
+      for (uint16_t i = 0; i < pixels(); ++i)
137
+        set_pixel_color(i, color);
138
+    }
139
+    show();
140
+  }
141
+
142
+  void Marlin_NeoPixel2::set_color_startup(const uint32_t color) {
143
+    for (uint16_t i = 0; i < pixels(); ++i)
144
+      set_pixel_color(i, color);
145
+    show();
146
+  }
147
+
148
+  void Marlin_NeoPixel2::init() {
149
+    neoindex = -1;                        // -1 .. NEOPIXEL2_PIXELS-1 range
150
+    set_brightness(NEOPIXEL2_BRIGHTNESS); //  0 .. 255 range
151
+    begin();
152
+    show();  // initialize to all off
153
+
154
+    #if ENABLED(NEOPIXEL2_STARTUP_TEST)
155
+      set_color_startup(adaneo.Color(255, 0, 0, 0));  // red
156
+      safe_delay(500);
157
+      set_color_startup(adaneo.Color(0, 255, 0, 0));  // green
158
+      safe_delay(500);
159
+      set_color_startup(adaneo.Color(0, 0, 255, 0));  // blue
160
+      safe_delay(500);
161
+    #endif
162
+
163
+    #if ENABLED(NEO2_USER_PRESET_STARTUP)
164
+      set_color(adaneo.Color(NEO2_USER_PRESET_RED, NEO2_USER_PRESET_GREEN, NEO2_USER_PRESET_BLUE, NEO2_USER_PRESET_WHITE));
165
+    #else
166
+      set_color(adaneo.Color(0, 0, 0, 0));
167
+    #endif
168
+  }
169
+
170
+#endif // NEOPIXEL2_SEPARATE
171
+
123 172
 #endif // NEOPIXEL_LED

+ 56
- 14
Marlin/src/feature/leds/neopixel.h ファイルの表示

@@ -38,10 +38,14 @@
38 38
 // Defines
39 39
 // ------------------------
40 40
 
41
-#if defined(NEOPIXEL2_TYPE) && NEOPIXEL2_TYPE != NEOPIXEL_TYPE
41
+#if defined(NEOPIXEL2_TYPE) && NEOPIXEL2_TYPE != NEOPIXEL_TYPE && DISABLED(NEOPIXEL2_SEPARATE)
42 42
   #define MULTIPLE_NEOPIXEL_TYPES 1
43 43
 #endif
44 44
 
45
+#if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES)
46
+  #define CONJOINED_NEOPIXEL 1
47
+#endif
48
+
45 49
 #if NEOPIXEL_TYPE == NEO_RGB || NEOPIXEL_TYPE == NEO_RBG || NEOPIXEL_TYPE == NEO_GRB || NEOPIXEL_TYPE == NEO_GBR || NEOPIXEL_TYPE == NEO_BRG || NEOPIXEL_TYPE == NEO_BGR
46 50
   #define NEOPIXEL_IS_RGB 1
47 51
 #else
@@ -61,7 +65,7 @@
61 65
 class Marlin_NeoPixel {
62 66
 private:
63 67
   static Adafruit_NeoPixel adaneo1
64
-    #if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES)
68
+    #if CONJOINED_NEOPIXEL
65 69
       , adaneo2
66 70
     #endif
67 71
   ;
@@ -80,11 +84,7 @@ public:
80 84
 
81 85
   static inline void begin() {
82 86
     adaneo1.begin();
83
-    #if ENABLED(NEOPIXEL2_INSERIES)
84
-      adaneo2.begin();
85
-    #else
86
-      TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.begin());
87
-    #endif
87
+    TERN_(CONJOINED_NEOPIXEL, adaneo2.begin());
88 88
   }
89 89
 
90 90
   static inline void set_pixel_color(const uint16_t n, const uint32_t c) {
@@ -93,23 +93,21 @@ public:
93 93
       else adaneo1.setPixelColor(n, c);
94 94
     #else
95 95
       adaneo1.setPixelColor(n, c);
96
-      TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.setPixelColor(n, c));
96
+      #if MULTIPLE_NEOPIXEL_TYPES
97
+        adaneo2.setPixelColor(n, c);
98
+      #endif
97 99
     #endif
98 100
   }
99 101
 
100 102
   static inline void set_brightness(const uint8_t b) {
101 103
     adaneo1.setBrightness(b);
102
-    #if ENABLED(NEOPIXEL2_INSERIES)
103
-      adaneo2.setBrightness(b);
104
-    #else
105
-      TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.setBrightness(b));
106
-    #endif
104
+    TERN_(CONJOINED_NEOPIXEL, adaneo2.setBrightness(b));
107 105
   }
108 106
 
109 107
   static inline void show() {
110 108
     adaneo1.show();
111 109
     #if PIN_EXISTS(NEOPIXEL2)
112
-      #if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES)
110
+      #if CONJOINED_NEOPIXEL
113 111
         adaneo2.show();
114 112
       #else
115 113
         adaneo1.setPin(NEOPIXEL2_PIN);
@@ -132,3 +130,47 @@ public:
132 130
 };
133 131
 
134 132
 extern Marlin_NeoPixel neo;
133
+
134
+// Neo pixel channel 2
135
+#if ENABLED(NEOPIXEL2_SEPARATE)
136
+  
137
+  #if NEOPIXEL2_TYPE == NEO_RGB || NEOPIXEL2_TYPE == NEO_RBG || NEOPIXEL2_TYPE == NEO_GRB || NEOPIXEL2_TYPE == NEO_GBR || NEOPIXEL2_TYPE == NEO_BRG || NEOPIXEL2_TYPE == NEO_BGR
138
+    #define NEOPIXEL2_IS_RGB 1
139
+  #else
140
+    #define NEOPIXEL2_IS_RGBW 1
141
+  #endif
142
+
143
+  #if NEOPIXEL2_IS_RGB
144
+    #define NEO2_WHITE 255, 255, 255, 0
145
+  #else
146
+    #define NEO2_WHITE 0, 0, 0, 255
147
+  #endif
148
+
149
+  class Marlin_NeoPixel2 {
150
+  private:
151
+    static Adafruit_NeoPixel adaneo;
152
+
153
+  public:
154
+    static int8_t neoindex;
155
+
156
+    static void init();
157
+    static void set_color_startup(const uint32_t c);
158
+
159
+    static void set_color(const uint32_t c);
160
+
161
+    static inline void begin() { adaneo.begin(); }
162
+    static inline void set_pixel_color(const uint16_t n, const uint32_t c) { adaneo.setPixelColor(n, c); }
163
+    static inline void set_brightness(const uint8_t b) { adaneo.setBrightness(b); }
164
+    static inline void show() { adaneo.show(); }
165
+
166
+    // Accessors
167
+    static inline uint16_t pixels() { return adaneo.numPixels();}
168
+    static inline uint8_t brightness() { return adaneo.getBrightness(); }
169
+    static inline uint32_t Color(uint8_t r, uint8_t g, uint8_t b, uint8_t w) {
170
+      return adaneo.Color(r, g, b, w);
171
+    }
172
+  };
173
+
174
+  extern Marlin_NeoPixel2 neo2;
175
+
176
+#endif // NEOPIXEL2_SEPARATE

+ 24
- 4
Marlin/src/gcode/feature/leds/M150.cpp ファイルの表示

@@ -37,6 +37,9 @@
37 37
  * With NEOPIXEL_LED:
38 38
  *  I<index>  Set the NeoPixel index to affect. Default: All
39 39
  *
40
+ * With NEOPIXEL2_SEPARATE:
41
+ *  S<index>  The NeoPixel strip to set. Default is index 0.
42
+ *
40 43
  * Examples:
41 44
  *
42 45
  *   M150 R255       ; Turn LED red
@@ -47,18 +50,35 @@
47 50
  *   M150 P127       ; Set LED 50% brightness
48 51
  *   M150 P          ; Set LED full brightness
49 52
  *   M150 I1 R       ; Set NEOPIXEL index 1 to red
53
+ *   M150 S1 I1 R    ; Set SEPARATE index 1 to red
50 54
  */
55
+
51 56
 void GcodeSuite::M150() {
52 57
   #if ENABLED(NEOPIXEL_LED)
53
-    neo.neoindex = parser.intval('I', -1);
58
+    const uint8_t index = parser.intval('I', -1);
59
+    #if ENABLED(NEOPIXEL2_SEPARATE)
60
+      const uint8_t unit = parser.intval('S'),
61
+                    brightness = unit ? neo2.brightness() : neo.brightness();
62
+      *(unit ? &neo2.neoindex : &neo.neoindex) = index;
63
+    #else
64
+      const uint8_t brightness = neo.brightness();
65
+      neo.neoindex = index;
66
+    #endif
54 67
   #endif
55
-  leds.set_color(MakeLEDColor(
68
+
69
+  const LEDColor color = MakeLEDColor(
56 70
     parser.seen('R') ? (parser.has_value() ? parser.value_byte() : 255) : 0,
57 71
     parser.seen('U') ? (parser.has_value() ? parser.value_byte() : 255) : 0,
58 72
     parser.seen('B') ? (parser.has_value() ? parser.value_byte() : 255) : 0,
59 73
     parser.seen('W') ? (parser.has_value() ? parser.value_byte() : 255) : 0,
60
-    parser.seen('P') ? (parser.has_value() ? parser.value_byte() : 255) : neo.brightness()
61
-  ));
74
+    parser.seen('P') ? (parser.has_value() ? parser.value_byte() : 255) : brightness
75
+  );
76
+
77
+  #if ENABLED(NEOPIXEL2_SEPARATE)
78
+    if (unit == 1) { leds2.set_color(color); return; }
79
+  #endif
80
+
81
+  leds.set_color(color);
62 82
 }
63 83
 
64 84
 #endif // HAS_COLOR_LEDS

+ 5
- 0
Marlin/src/inc/Conditionals_LCD.h ファイルの表示

@@ -780,3 +780,8 @@
780 780
 #ifndef EXTRUDE_MINTEMP
781 781
   #define EXTRUDE_MINTEMP 170
782 782
 #endif
783
+
784
+// This flag indicates if Neopixel pins are shared or separated  
785
+#if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES)
786
+  #define CONJOINED_NEOPIXEL 1
787
+#endif

+ 22
- 0
Marlin/src/inc/Conditionals_adv.h ファイルの表示

@@ -246,6 +246,28 @@
246 246
   #endif
247 247
 #endif
248 248
 
249
+#if BOTH(LED_CONTROL_MENU, NEOPIXEL2_SEPARATE)
250
+  #ifndef LED2_USER_PRESET_RED
251
+    #define LED2_USER_PRESET_RED       255
252
+  #endif
253
+  #ifndef LED2_USER_PRESET_GREEN
254
+    #define LED2_USER_PRESET_GREEN     255
255
+  #endif
256
+  #ifndef LED2_USER_PRESET_BLUE
257
+    #define LED2_USER_PRESET_BLUE      255
258
+  #endif
259
+  #ifndef LED2_USER_PRESET_WHITE
260
+    #define LED2_USER_PRESET_WHITE     0
261
+  #endif
262
+  #ifndef LED2_USER_PRESET_BRIGHTNESS
263
+    #ifdef NEOPIXEL2_BRIGHTNESS
264
+      #define LED2_USER_PRESET_BRIGHTNESS NEOPIXEL2_BRIGHTNESS
265
+    #else
266
+      #define LED2_USER_PRESET_BRIGHTNESS 255
267
+    #endif
268
+  #endif
269
+#endif
270
+
249 271
 // If platform requires early initialization of watchdog to properly boot
250 272
 #if ENABLED(USE_WATCHDOG) && defined(ARDUINO_ARCH_SAM)
251 273
   #define EARLY_WATCHDOG 1

+ 5
- 0
Marlin/src/inc/SanityCheck.h ファイルの表示

@@ -2120,7 +2120,12 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
2120 2120
   #if !(PIN_EXISTS(NEOPIXEL) && NEOPIXEL_PIXELS > 0)
2121 2121
     #error "NEOPIXEL_LED requires NEOPIXEL_PIN and NEOPIXEL_PIXELS."
2122 2122
   #endif
2123
+  #elif ENABLED(NEOPIXEL2_SEPARATE)
2124
+   #if !(PIN_EXISTS(NEOPIXEL2) && NEOPIXEL2_PIXELS > 0)
2125
+    #error "NEOPIXEL2 requires NEOPIXEL2_PIN and NEOPIXEL2_PIXELS."
2126
+  #endif
2123 2127
 #endif
2128
+
2124 2129
 #undef _RGB_TEST
2125 2130
 
2126 2131
 #if DISABLED(NO_COMPILE_TIME_PWM)

読み込み中…
キャンセル
保存