Arduino 16 lysdioder med två 74HC595 SKIFT register (obegränsad stift) (3 / 4 steg)
Steg 3: Koden
Koderna är avsedda att begränsat antal SKIFT register och det finns ingen universell funktion/metod att göra det. Som systemutvecklare är det oacceptabelt för mig och jag är van att göra allt lika dynamisk som möjligt med inga begränsningar. Jag om de befintliga kodexempel så att du kan använda obegränsat antal SKIFT register. Se kod nedan:
int numOfRegisters = 2;
byte * registerState;
void setup() {
Initiera matrisen
registerState = nya byte [numOfRegisters];
för (size_t jag = 0; jag < numOfRegisters; i ++) {
registerState [i] = 0;
}
... setup
}
void regWrite (int pin, bool stat) {
Bestämmer register int reg = pin / 8;
Anger PIN-koden för faktiska register
int actualPin = pin - (8 * reg);
Börja session
digitalWrite (latchPin, låg);
för (int jag = 0; jag < numOfRegisters; i ++) {
Få faktiska stater för register
byte * staterna =® isterState [i];
Uppdatera tillstånd
om (jag == reg) {
bitWrite (* staterna, actualPin, staten);
}
Skriva
shiftOut (dataPin, clockPin, MSBFIRST, * stater);
}
Avsluta sessionen
digitalWrite (latchPin, hög);
}