Stap 6: Schrijven van de Code
Ik schreef de code in incrementele stadia. Ik ben begonnen met de leestijd van de Real Time Clock (RTC) en deze in de Arduino uitgang voor seriële venster wordt weergegeven. Vergeet niet, moet u beschikken over de DS1307RTC en de bibliotheek van de tijd van de vorige stap in uw Arduino-omgeving geladen.
Vervolgens heb ik drie bytes, één voor elke shift register, en elke bit is toegewezen aan een specifieke LED-licht:
byte registerByte1 = 0; // 0 ES IST | 1 FUNF | 2 ACHT | 3 VIERTEL | 4 DREI | 5 ZEHN | 6 UND | 7 ZWANZIG byte registerByte2 = 0; // 0 VOR | 1 NACH | 2 HALB | 3 FUNF | 4 EIN | 5 NEUN | 6 ZWEI | 7 DREIbyte registerByte3 = 0; // 0 VIER | 1 SECHS | 2 ACHT | 3 SIEBEN | 4 ZWOLF | 5 ZEHN | 6 ELF | 7 UHR
Dan kom ik dan in- of uitschakelen de specifieke bits met behulp van de Arduino bitSet() functie. Bijvoorbeeld, als u wilt inschakelen van registerByte1 de laatste beetje, ZWANZIG (twintig), zou ik dit gebruiken:
bitSet(registerByte1,7); // Set registerByte1's seventh bit to ON (1) for ZWANZIG
Ik heb een groot gemaakt als / dan de structuur in te stellen van de juiste registerBytes op de juiste in-/ uitschakelen posities gebaseerd op de tijd van de RTC. Zodra alle van de registerBytes waren correct ingesteld, zou ik hen vervolgens uitduwen door de aanroepende updateShiftRegisters():
void updateShiftRegisters(){ digitalWrite(LATCH, LOW); shiftOut(DATA, CLOCK, MSBFIRST, registerByte3); shiftOut(DATA, CLOCK, MSBFIRST, registerByte2); shiftOut(DATA, CLOCK, MSBFIRST, registerByte1); digitalWrite(LATCH, HIGH); }
Bijgevoegd is mijn code. Het kan zeker worden geoptimaliseerd, maar wordt naar behoren uitgevoerd zonder problemen.