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() {
40 if (mLedMatrixType == kTypeLedMatrixDirect) {
41 if (mResistorsOnSegments) {
42 LedMatrixDirect* ledMatrix =
43 new LedMatrixDirect(mHardware, mNumDigits, mNumSegments);
44 ledMatrix->setGroupPins(mDigitPins);
45 ledMatrix->setElementPins(mSegmentPins);
47 ledMatrix->setCathodeOnGroup();
49 ledMatrix->setAnodeOnGroup();
53 LedMatrixDirect* ledMatrix =
54 new LedMatrixDirect(mHardware, mNumSegments, mNumDigits);
55 ledMatrix->setGroupPins(mSegmentPins);
56 ledMatrix->setElementPins(mDigitPins);
58 ledMatrix->setAnodeOnGroup();
60 ledMatrix->setCathodeOnGroup();
66 LedMatrixSerial* ledMatrix;
67 if (mLedMatrixType == kTypeLedMatrixSerial) {
68 ledMatrix =
new LedMatrixSerial(mHardware, mNumDigits, mNumSegments);
70 ledMatrix =
new LedMatrixSpi(mHardware, mNumDigits, mNumSegments);
72 ledMatrix->setGroupPins(mDigitPins);
73 ledMatrix->setElementPins(mLatchPin, mDataPin, mClockPin);
75 ledMatrix->setCathodeOnGroup();
77 ledMatrix->setAnodeOnGroup();
83 Driver* DriverBuilder::build() {
84 LedMatrix* ledMatrix = buildLedMatrix();
86 if (mResistorsOnSegments) {
87 if (mUseModulatingDriver) {
88 return new ModulatingDigitDriver(ledMatrix, mDimmingDigits,
89 mNumDigits, mNumSubFields,
true );
91 return new DigitDriver(ledMatrix, mDimmingDigits, mNumDigits,
95 return new SegmentDriver(ledMatrix, mDimmingDigits, mNumDigits,