Stap 3: De code
De bestaande codes zijn ontworpen voor beperkt aantal shift registers en er is geen universele functie/methode om het te doen. Als softwareontwikkelaar is het onaanvaardbaar voor mij en ik ben gewend om alles zo dynamisch mogelijk zonder beperkingen. Ik vernieuwde de bestaande codevoorbeelden waarmee u onbeperkt aantal shift registers te gebruiken. Zie onderstaande code:
int numOfRegisters = 2;
byte * registerState;
VOID Setup {}
Matrix initialiseren
registerState = nieuwe byte [numOfRegisters];
voor (size_t i = 0; ik < numOfRegisters; i ++) {}
registerState [i] = 0;
}
... setup
}
VOID regWrite (int pin, bool staat) {}
Bepaalt register int reg = pin / 8;
Hiermee bepaalt u de pin voor werkelijke register
int actualPin = pin - (8 * reg);
Sessie beginnen
digitalWrite (latchPin, laag);
for (int i = 0; ik < numOfRegisters; i ++) {}
Werkelijke Staten krijgen voor register
byte-Staten =® isterState [i];
Status bijwerken
Als (ik == reg) {}
bitWrite (* Staten, actualPin, staat);
}
Schrijven
shiftOut (dataPin, clockPin, MSBFIRST, * Staten);
}
Sessie beëindigen
digitalWrite (latchPin, hoge);
}