31 #if defined(ARDUINO_ARCH_AVR) && !defined(__arm__)
37 #define TLC5947_MODULE_PWM_CHANNEL_COUNT 24
43 static void ConvertFrame(uint8_t* sendBufferPtr, uint8_t* channelPtr)
48 uint8_t ch1 = *channelPtr--;
49 uint8_t ch2 = *channelPtr--;
51 *sendBufferPtr++ = ch1;
52 *sendBufferPtr++ = (ch1 & 0xf0) | (ch2 >> 4);
53 *sendBufferPtr++ = ((ch2 << 4) & 0xf0) | (ch2 >> 4);
62 static void ConvertFrame(uint8_t* sendBufferPtr, uint8_t* sourceBufferPtr)
64 uint16_t* channelPtr = (uint16_t*)sourceBufferPtr;
69 uint8_t ch1 = *channelPtr--;
70 uint8_t ch2 = *channelPtr--;
72 *sendBufferPtr++ = ch1 >> 8;
73 *sendBufferPtr++ = (ch1 & 0xf0) | (ch2 >> 12);
74 *sendBufferPtr++ = ch2 >> 4;
88 Tlc5947MethodBase(uint8_t pinClock, uint8_t pinData, uint8_t pinLatch, uint8_t pinOutputEnable, uint16_t pixelCount,
size_t elementSize,
size_t settingsSize) :
91 _wire(pinClock, pinData),
93 _pinOutputEnable(pinOutputEnable)
95 _data =
static_cast<uint8_t*
>(malloc(_sizeData));
96 pinMode(pinLatch, OUTPUT);
97 pinMode(pinOutputEnable, OUTPUT);
98 digitalWrite(pinOutputEnable, HIGH);
101 Tlc5947MethodBase(uint8_t pinClock, uint8_t pinData, uint8_t pinLatch, uint16_t pixelCount,
size_t elementSize,
size_t settingsSize) :
102 Tlc5947MethodBase(pinClock, pinData, pinLatch, -1, pixelCount, elementSize, settingsSize)
106 #if !defined(__AVR_ATtiny85__) && !defined(ARDUINO_attiny)
107 Tlc5947MethodBase(uint8_t pinLatch, uint8_t pinOutputEnable, uint16_t pixelCount,
size_t elementSize,
size_t settingsSize) :
108 Tlc5947MethodBase(SCK, MOSI, pinLatch, pinOutputEnable, pixelCount, elementSize, settingsSize)
112 Tlc5947MethodBase(uint8_t pinLatch, uint16_t pixelCount,
size_t elementSize,
size_t settingsSize) :
113 Tlc5947MethodBase(SCK, MOSI, pinLatch, -1, pixelCount, elementSize, settingsSize)
121 pinMode(_pinLatch, INPUT);
122 pinMode(_pinOutputEnable, INPUT);
130 #if defined(ARDUINO_ARCH_ESP32)
131 void Initialize(int8_t sck, int8_t miso, int8_t mosi, int8_t ss)
133 _wire.begin(sck, miso, mosi, ss);
140 memset(_data, 0, _sizeData);
146 digitalWrite(_pinOutputEnable, HIGH);
148 digitalWrite(_pinLatch, LOW);
149 _wire.beginTransaction();
153 for (uint16_t countSend = 0; countSend < _countModule; countSend++)
156 T_BITCONVERT::ConvertFrame(_sendBuffer, lastChannelPtr);
161 _wire.endTransaction();
162 digitalWrite(_pinLatch, HIGH);
163 digitalWrite(_pinLatch, LOW);
164 digitalWrite(_pinOutputEnable, LOW);
185 _wire.applySettings(settings);
189 const uint16_t _countModule;
190 const size_t _sizeData;
196 uint8_t _pinOutputEnable;
202 #if !defined(__AVR_ATtiny85__) && !defined(ARDUINO_attiny)
#define TLC5947_MODULE_PWM_CHANNEL_COUNT
Definition: Tlc5947GenericMethod.h:37
Tlc5947MethodBase< Tlc5947Converter8Bit, TwoWireSpiImple< SpiSpeed30Mhz > > Tlc5947Spi30MhzMethod
Definition: Tlc5947GenericMethod.h:206
Tlc5947MethodBase< Tlc5947Converter8Bit, TwoWireSpiImple< SpiSpeed15Mhz > > Tlc5947SpiMethod
Definition: Tlc5947GenericMethod.h:213
Tlc5947MethodBase< Tlc5947Converter16Bit, TwoWireSpiImple< SpiSpeed15Mhz > > Tlc5947Spi15MhzMethod16Bit
Definition: Tlc5947GenericMethod.h:211
Tlc5947MethodBase< Tlc5947Converter8Bit, TwoWireSpiImple< SpiSpeed15Mhz > > Tlc5947Spi15MhzMethod
Definition: Tlc5947GenericMethod.h:210
Tlc5947MethodBase< Tlc5947Converter16Bit, TwoWireSpiImple< SpiSpeed30Mhz > > Tlc5947Spi30MhzMethod16Bit
Definition: Tlc5947GenericMethod.h:207
Tlc5947MethodBase< Tlc5947Converter8Bit, TwoWireBitBangImple > Tlc5947Method
Definition: Tlc5947GenericMethod.h:199
Tlc5947MethodBase< Tlc5947Converter16Bit, TwoWireBitBangImple > Tlc5947Method16Bit
Definition: Tlc5947GenericMethod.h:200
Tlc5947MethodBase< Tlc5947Converter16Bit, TwoWireSpiImple< SpiSpeed15Mhz > > Tlc5947SpiMethod16Bit
Definition: Tlc5947GenericMethod.h:214
Definition: Tlc5947GenericMethod.h:59
static const size_t sizeChannel
Definition: Tlc5947GenericMethod.h:61
static void ConvertFrame(uint8_t *sendBufferPtr, uint8_t *sourceBufferPtr)
Definition: Tlc5947GenericMethod.h:62
Definition: Tlc5947GenericMethod.h:40
static const size_t sizeChannel
Definition: Tlc5947GenericMethod.h:42
static void ConvertFrame(uint8_t *sendBufferPtr, uint8_t *channelPtr)
Definition: Tlc5947GenericMethod.h:43
Definition: Tlc5947GenericMethod.h:81
bool IsReadyToUpdate() const
Definition: Tlc5947GenericMethod.h:125
Tlc5947MethodBase(uint8_t pinLatch, uint8_t pinOutputEnable, uint16_t pixelCount, size_t elementSize, size_t settingsSize)
Definition: Tlc5947GenericMethod.h:107
size_t getDataSize() const
Definition: Tlc5947GenericMethod.h:178
void Initialize()
Definition: Tlc5947GenericMethod.h:137
bool AlwaysUpdate()
Definition: Tlc5947GenericMethod.h:167
void applySettings([[maybe_unused]] const SettingsObject &settings)
Definition: Tlc5947GenericMethod.h:183
void Update(bool)
Definition: Tlc5947GenericMethod.h:143
Tlc5947MethodBase(uint8_t pinClock, uint8_t pinData, uint8_t pinLatch, uint16_t pixelCount, size_t elementSize, size_t settingsSize)
Definition: Tlc5947GenericMethod.h:101
Tlc5947MethodBase(uint8_t pinClock, uint8_t pinData, uint8_t pinLatch, uint8_t pinOutputEnable, uint16_t pixelCount, size_t elementSize, size_t settingsSize)
Definition: Tlc5947GenericMethod.h:88
T_TWOWIRE::SettingsObject SettingsObject
Definition: Tlc5947GenericMethod.h:83
static const size_t sizeSendBuffer
Definition: Tlc5947GenericMethod.h:86
uint8_t * getData() const
Definition: Tlc5947GenericMethod.h:173
~Tlc5947MethodBase()
Definition: Tlc5947GenericMethod.h:118
Tlc5947MethodBase(uint8_t pinLatch, uint16_t pixelCount, size_t elementSize, size_t settingsSize)
Definition: Tlc5947GenericMethod.h:112