28
28
#define I_8266_U1_400_3 10
29
29
#define I_8266_DM_400_3 11
30
30
#define I_8266_BB_400_3 12
31
- // TM1418 (RGBW)
31
+ // TM1814 (RGBW)
32
32
#define I_8266_U0_TM1_4 13
33
33
#define I_8266_U1_TM1_4 14
34
34
#define I_8266_DM_TM1_4 15
68
68
#define I_32_R7_400_3 44
69
69
#define I_32_I0_400_3 45
70
70
#define I_32_I1_400_3 46
71
- // TM1418 (RGBW)
71
+ // TM1814 (RGBW)
72
72
#define I_32_R0_TM1_4 47
73
73
#define I_32_R1_TM1_4 48
74
74
#define I_32_R2_TM1_4 49
115
115
#define B_8266_U1_400_3 NeoPixelBrightnessBus<NeoGrbFeature, NeoEsp8266Uart1400KbpsMethod> // 3 chan, esp8266, gpio2
116
116
#define B_8266_DM_400_3 NeoPixelBrightnessBus<NeoGrbFeature, NeoEsp8266Dma400KbpsMethod> // 3 chan, esp8266, gpio3
117
117
#define B_8266_BB_400_3 NeoPixelBrightnessBus<NeoGrbFeature, NeoEsp8266BitBang400KbpsMethod> // 3 chan, esp8266, bb (any pin)
118
- // TM1418 (RGBW)
118
+ // TM1814 (RGBW)
119
119
#define B_8266_U0_TM1_4 NeoPixelBrightnessBus<NeoWrgbTm1814Feature, NeoEsp8266Uart0Tm1814Method>
120
120
#define B_8266_U1_TM1_4 NeoPixelBrightnessBus<NeoWrgbTm1814Feature, NeoEsp8266Uart1Tm1814Method>
121
121
#define B_8266_DM_TM1_4 NeoPixelBrightnessBus<NeoWrgbTm1814Feature, NeoEsp8266DmaTm1814Method>
157
157
#define B_32_R7_400_3 NeoPixelBrightnessBus<NeoGrbFeature, NeoEsp32Rmt7400KbpsMethod>
158
158
#define B_32_I0_400_3 NeoPixelBrightnessBus<NeoGrbFeature, NeoEsp32I2s0400KbpsMethod>
159
159
#define B_32_I1_400_3 NeoPixelBrightnessBus<NeoGrbFeature, NeoEsp32I2s1400KbpsMethod>
160
- // TM1418 (RGBW)
160
+ // TM1814 (RGBW)
161
161
#define B_32_R0_TM1_4 NeoPixelBrightnessBus<NeoWrgbTm1814Feature, NeoEsp32Rmt0Tm1814Method>
162
162
#define B_32_R1_TM1_4 NeoPixelBrightnessBus<NeoWrgbTm1814Feature, NeoEsp32Rmt1Tm1814Method>
163
163
#define B_32_R2_TM1_4 NeoPixelBrightnessBus<NeoWrgbTm1814Feature, NeoEsp32Rmt2Tm1814Method>
191
191
// handles pointer type conversion for all possible bus types
192
192
class PolyBus {
193
193
public:
194
+ // Begin & initialize the PixelSettings for TM1814 strips.
195
+ template <class T >
196
+ static void beginTM1814 (void * busPtr) {
197
+ T tm1814_strip = static_cast <T>(busPtr);
198
+ tm1814_strip->Begin ();
199
+ // Max current for each LED (38.0 mA).
200
+ const uint16_t max = NeoTm1814Settings::MaxCurrent;
201
+ tm1814_strip->SetPixelSettings (NeoTm1814Settings (/* R*/ max, /* G*/ max, /* B*/ max, /* W*/ max));
202
+ }
194
203
static void begin (void * busPtr, uint8_t busType, uint8_t * pins) {
195
204
switch (busType) {
196
205
case I_NONE: break ;
@@ -207,10 +216,10 @@ class PolyBus {
207
216
case I_8266_U1_400_3: (static_cast <B_8266_U1_400_3*>(busPtr))->Begin (); break ;
208
217
case I_8266_DM_400_3: (static_cast <B_8266_DM_400_3*>(busPtr))->Begin (); break ;
209
218
case I_8266_BB_400_3: (static_cast <B_8266_BB_400_3*>(busPtr))->Begin (); break ;
210
- case I_8266_U0_TM1_4: ( static_cast <B_8266_U0_TM1_4*>(busPtr))-> Begin ( ); break ;
211
- case I_8266_U1_TM1_4: ( static_cast <B_8266_U1_TM1_4*>(busPtr))-> Begin ( ); break ;
212
- case I_8266_DM_TM1_4: ( static_cast <B_8266_DM_TM1_4*>(busPtr))-> Begin ( ); break ;
213
- case I_8266_BB_TM1_4: ( static_cast <B_8266_BB_TM1_4*>(busPtr))-> Begin ( ); break ;
219
+ case I_8266_U0_TM1_4: beginTM1814 <B_8266_U0_TM1_4*>(busPtr); break ;
220
+ case I_8266_U1_TM1_4: beginTM1814 <B_8266_U1_TM1_4*>(busPtr); break ;
221
+ case I_8266_DM_TM1_4: beginTM1814 <B_8266_DM_TM1_4*>(busPtr); break ;
222
+ case I_8266_BB_TM1_4: beginTM1814 <B_8266_BB_TM1_4*>(busPtr); break ;
214
223
case I_HS_DOT_3: (static_cast <B_HS_DOT_3*>(busPtr))->Begin (); break ;
215
224
case I_HS_LPD_3: (static_cast <B_HS_LPD_3*>(busPtr))->Begin (); break ;
216
225
case I_HS_WS1_3: (static_cast <B_HS_WS1_3*>(busPtr))->Begin (); break ;
@@ -247,16 +256,16 @@ class PolyBus {
247
256
case I_32_R7_400_3: (static_cast <B_32_R7_400_3*>(busPtr))->Begin (); break ;
248
257
case I_32_I0_400_3: (static_cast <B_32_I0_400_3*>(busPtr))->Begin (); break ;
249
258
case I_32_I1_400_3: (static_cast <B_32_I1_400_3*>(busPtr))->Begin (); break ;
250
- case I_32_R0_TM1_4: ( static_cast <B_32_R0_TM1_4*>(busPtr))-> Begin ( ); break ;
251
- case I_32_R1_TM1_4: ( static_cast <B_32_R1_TM1_4*>(busPtr))-> Begin ( ); break ;
252
- case I_32_R2_TM1_4: ( static_cast <B_32_R2_TM1_4*>(busPtr))-> Begin ( ); break ;
253
- case I_32_R3_TM1_4: ( static_cast <B_32_R3_TM1_4*>(busPtr))-> Begin ( ); break ;
254
- case I_32_R4_TM1_4: ( static_cast <B_32_R4_TM1_4*>(busPtr))-> Begin ( ); break ;
255
- case I_32_R5_TM1_4: ( static_cast <B_32_R5_TM1_4*>(busPtr))-> Begin ( ); break ;
256
- case I_32_R6_TM1_4: ( static_cast <B_32_R6_TM1_4*>(busPtr))-> Begin ( ); break ;
257
- case I_32_R7_TM1_4: ( static_cast <B_32_R7_TM1_4*>(busPtr))-> Begin ( ); break ;
258
- case I_32_I0_TM1_4: ( static_cast <B_32_I0_TM1_4*>(busPtr))-> Begin ( ); break ;
259
- case I_32_I1_TM1_4: ( static_cast <B_32_I1_TM1_4*>(busPtr))-> Begin ( ); break ;
259
+ case I_32_R0_TM1_4: beginTM1814 <B_32_R0_TM1_4*>(busPtr); break ;
260
+ case I_32_R1_TM1_4: beginTM1814 <B_32_R1_TM1_4*>(busPtr); break ;
261
+ case I_32_R2_TM1_4: beginTM1814 <B_32_R2_TM1_4*>(busPtr); break ;
262
+ case I_32_R3_TM1_4: beginTM1814 <B_32_R3_TM1_4*>(busPtr); break ;
263
+ case I_32_R4_TM1_4: beginTM1814 <B_32_R4_TM1_4*>(busPtr); break ;
264
+ case I_32_R5_TM1_4: beginTM1814 <B_32_R5_TM1_4*>(busPtr); break ;
265
+ case I_32_R6_TM1_4: beginTM1814 <B_32_R6_TM1_4*>(busPtr); break ;
266
+ case I_32_R7_TM1_4: beginTM1814 <B_32_R7_TM1_4*>(busPtr); break ;
267
+ case I_32_I0_TM1_4: beginTM1814 <B_32_I0_TM1_4*>(busPtr); break ;
268
+ case I_32_I1_TM1_4: beginTM1814 <B_32_I1_TM1_4*>(busPtr); break ;
260
269
// ESP32 can (and should, to avoid inadvertantly driving the chip select signal) specify the pins used for SPI, but only in begin()
261
270
case I_HS_DOT_3: (static_cast <B_HS_DOT_3*>(busPtr))->Begin (pins[1 ], -1 , pins[0 ], -1 ); break ;
262
271
case I_HS_LPD_3: (static_cast <B_HS_LPD_3*>(busPtr))->Begin (pins[1 ], -1 , pins[0 ], -1 ); break ;
@@ -860,6 +869,8 @@ class PolyBus {
860
869
return I_8266_U0_NEO_4 + offset;
861
870
case TYPE_WS2811_400KHZ:
862
871
return I_8266_U0_400_3 + offset;
872
+ case TYPE_TM1814:
873
+ return I_8266_U0_TM1_4 + offset;
863
874
}
864
875
#else // ESP32
865
876
uint8_t offset = num; // RMT bus # == bus index in BusManager
@@ -872,6 +883,8 @@ class PolyBus {
872
883
return I_32_R0_NEO_4 + offset;
873
884
case TYPE_WS2811_400KHZ:
874
885
return I_32_R0_400_3 + offset;
886
+ case TYPE_TM1814:
887
+ return I_32_R0_TM1_4 + offset;
875
888
}
876
889
#endif
877
890
}
0 commit comments