25 #ifndef ACE_SEGMENT_HT16K33_MODULE_H
26 #define ACE_SEGMENT_HT16K33_MODULE_H
30 #include "../LedModule.h"
32 class Ht16k33ModuleTest_patternForChipPos_colonDisabled;
33 class Ht16k33ModuleTest_patternForChipPos_colonEnabled;
35 namespace ace_segment {
65 template <
typename T_WIREI, u
int8_t T_DIGITS>
95 memset(mPatterns, 0, T_DIGITS);
96 writeCommand(kSystemOn);
97 writeCommand(kDisplayOn);
101 writeCommand(kDisplayOff);
102 writeCommand(kSystemOff);
117 mEnableColon = enable;
153 mWire.beginTransmission(mAddr);
156 for (uint8_t chipPos = 0; chipPos < T_DIGITS + 1; ++chipPos) {
157 uint8_t pattern = patternForChipPos(chipPos, mPatterns, mEnableColon);
158 mWire.write(pattern);
161 mWire.endTransmission(
false);
171 friend class ::Ht16k33ModuleTest_patternForChipPos_colonDisabled;
172 friend class ::Ht16k33ModuleTest_patternForChipPos_colonEnabled;
175 void writeCommand(uint8_t command) {
176 mWire.beginTransmission(mAddr);
177 mWire.write(command);
178 mWire.endTransmission();
185 static uint8_t patternForChipPos(
186 uint8_t chipPos,
const uint8_t patterns[],
bool enableColon) {
191 uint8_t pattern = patterns[1];
201 bool hasColon = patterns[1] & 0x80;
202 return hasColon ? 0x02 : 0x00;
217 static uint8_t
const kSystemOff = 0x20;
218 static uint8_t
const kSystemOn = 0x21;
219 static uint8_t
const kDisplayOff = 0x80;
220 static uint8_t
const kDisplayOn = 0x81;
221 static uint8_t
const kBrightness = 0xE0;
233 uint8_t mPatterns[T_DIGITS];