26 #include "LedMatrix.h" 27 #include "LedMatrixDirect.h" 28 #include "LedMatrixSerial.h" 29 #include "LedMatrixSpi.h" 31 #include "DigitDriver.h" 32 #include "ModulatingDigitDriver.h" 33 #include "SegmentDriver.h" 34 #include "DriverBuilder.h" 39 LedMatrix* DriverBuilder::buildLedMatrix() {
41 if (mLedMatrixType == kTypeLedMatrixDirect) {
42 if (mResistorsOnSegments) {
43 LedMatrixDirect* ledMatrix =
44 new LedMatrixDirect(mHardware, mNumDigits, mNumSegments);
45 ledMatrix->setGroupPins(mDigitPins);
46 ledMatrix->setElementPins(mSegmentPins);
48 ledMatrix->setCathodeOnGroup();
50 ledMatrix->setAnodeOnGroup();
54 LedMatrixDirect* ledMatrix =
55 new LedMatrixDirect(mHardware, mNumSegments, mNumDigits);
56 ledMatrix->setGroupPins(mSegmentPins);
57 ledMatrix->setElementPins(mDigitPins);
62 ledMatrix->setAnodeOnGroup();
64 ledMatrix->setCathodeOnGroup();
70 LedMatrixSerial* ledMatrix;
71 if (mLedMatrixType == kTypeLedMatrixSerial) {
72 ledMatrix =
new LedMatrixSerial(mHardware, mNumDigits, mNumSegments);
74 ledMatrix =
new LedMatrixSpi(mHardware, mNumDigits, mNumSegments);
76 ledMatrix->setGroupPins(mDigitPins);
77 ledMatrix->setElementPins(mLatchPin, mDataPin, mClockPin);
79 ledMatrix->setCathodeOnGroup();
81 ledMatrix->setAnodeOnGroup();
86 if (mUseTransistors) {
87 matrix->invertGroupLevels();
92 Driver* DriverBuilder::build() {
93 LedMatrix* ledMatrix = buildLedMatrix();
95 if (mResistorsOnSegments) {
96 if (mUseModulatingDriver) {
97 return new ModulatingDigitDriver(ledMatrix, mDimmablePatterns,
98 mNumDigits, mNumSubFields,
true );
100 return new DigitDriver(ledMatrix, mDimmablePatterns, mNumDigits,
104 return new SegmentDriver(ledMatrix, mDimmablePatterns, mNumDigits,