Världsklocka i tyska genom att använda Arduino (6 / 8 steg)
Steg 6: Skriva koden
Jag skrev koden i stegvisa faser. Jag började med behandlingen tid från den realtidsklocka (RTC) och visar det i Arduinos seriell utdatafönstret. Kom ihåg att du måste ha DS1307RTC och tid biblioteket från föregående steg laddas in i din Arduino miljö.
Nästa, jag skapade tre bytes, en för varje skiftregister och varje bit är mappat till en viss LED-ljus:
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 DREI
byte registerByte3 = 0; 0 VIER | SECHS 1 | 2 ACHT | 3 SIEBEN | 4 ZWOLF | 5 ZEHN | 6 ELF | 7 UHR
Jag sedan aktivera eller inaktivera särskilda bitar med hjälp av Arduino's bitSet() funktion. Till exempel om du vill aktivera registerByte1's sista biten, ZWANZIG (tjugo), skulle jag använda detta:
bitSet(registerByte1,7); Ställa in registerByte1's sjunde biten till på (1) för ZWANZIG
Jag skapade en stor om / då struktur för att ställa in den korrekta registerBytes till rätt på/av positioner baserat på tiden från RTC. När alla registerBytes var inställda, skulle jag sedan trycka dem av ringa updateShiftRegisters():
void updateShiftRegisters()
{
digitalWrite (LATCH, låg);
shiftOut (DATA, klocka, MSBFIRST, registerByte3);
shiftOut (DATA, klocka, MSBFIRST, registerByte2);
shiftOut (DATA, klocka, MSBFIRST, registerByte1);
digitalWrite (LATCH, hög);
}
Bifogat är min kod. Det kan definitivt vara optimerad men fungerar som det ska utan problem.