FastLED 3.9.15
Loading...
Searching...
No Matches
dmx.h
Go to the documentation of this file.
1
3
4#pragma once
5
6#include "fl/system/fastled.h"
7
10
13
14#if defined(DmxSimple_h) || defined(FASTLED_DOXYGEN)
15// IWYU pragma: begin_keep
16#include <DmxSimple.h>
17// IWYU pragma: end_keep
18
20#define HAS_DMX_SIMPLE
21
22
29template <fl::u8 DATA_PIN, EOrder RGB_ORDER = RGB> class DMXSimpleController : public CPixelLEDController<RGB_ORDER> {
30public:
32 virtual void init() { DmxSimple.usePin(DATA_PIN); }
33
34protected:
36 virtual void showPixels(PixelController<RGB_ORDER> & pixels) {
37 int iChannel = 1;
38 while(pixels.has(1)) {
39 DmxSimple.write(iChannel++, pixels.loadAndScale0());
40 DmxSimple.write(iChannel++, pixels.loadAndScale1());
41 DmxSimple.write(iChannel++, pixels.loadAndScale2());
42 pixels.advanceData();
43 pixels.stepDithering();
44 }
45 }
46};
47
48
49
50#endif
51
52#if defined(DmxSerial_h) || defined(FASTLED_DOXYGEN)
53// IWYU pragma: begin_keep
54#include <DMXSerial.h>
55// IWYU pragma: end_keep
56
58#define HAS_DMX_SERIAL
59
60
61
67template <EOrder RGB_ORDER = RGB> class DMXSerialController : public CPixelLEDController<RGB_ORDER> {
68public:
70 virtual void init() { DMXSerial.init(DMXController); }
71
73 virtual void showPixels(PixelController<RGB_ORDER> & pixels) {
74 int iChannel = 1;
75 while(pixels.has(1)) {
76 DMXSerial.write(iChannel++, pixels.loadAndScale0());
77 DMXSerial.write(iChannel++, pixels.loadAndScale1());
78 DMXSerial.write(iChannel++, pixels.loadAndScale2());
79 pixels.advanceData();
80 pixels.stepDithering();
81 }
82 }
83};
84
85
86
89
90#endif
#define DATA_PIN
Definition ClientReal.h:82
CPixelLEDController(RegistrationMode mode)
virtual void init()
Initialize the LED controller.
Definition dmx.h:70
virtual void showPixels(PixelController< RGB_ORDER > &pixels)
Send the LED data to the strip.
Definition dmx.h:73
DMX512 based LED controller class, using the DMXSerial library.
Definition dmx.h:67
virtual void init()
Initialize the LED controller.
Definition dmx.h:32
virtual void showPixels(PixelController< RGB_ORDER > &pixels)
Send the LED data to the strip.
Definition dmx.h:36
DMX512 based LED controller class, using the DmxSimple library.
Definition dmx.h:29
Internal FastLED header for implementation files.
FASTLED_FORCE_INLINE fl::u8 loadAndScale0(int lane, fl::u8 scale)
non-template alias of loadAndScale<0>()
FASTLED_FORCE_INLINE void advanceData()
Advance the data pointer forward, adjust position counter.
FASTLED_FORCE_INLINE fl::u8 loadAndScale1(int lane, fl::u8 scale)
non-template alias of loadAndScale<1>()
FASTLED_FORCE_INLINE bool has(int n)
Do we have n pixels left to process?
FASTLED_FORCE_INLINE void stepDithering()
Step the dithering forward - creates triangular wave that toggles between pixels.
FASTLED_FORCE_INLINE fl::u8 loadAndScale2(int lane, fl::u8 scale)
non-template alias of loadAndScale<2>()
Pixel controller class.