Full binär klocka (6 / 6 steg)
Steg 6: Koden
Steg för steg gå igenom:
#define
Detta sätter upp alla de pin outs för ATtiny
Setup()
tilldelar alla stift pinMode
Jag hade problem med att konfigurera min binär klocka för att vara samma som min klocka så jag la en konfigurationsinställning, att trycka på knappen timme kringgår detta alternativ
shiftOut skicka byten data 0xff, B11111111 i binärt, till skiftregister sätter på alla kolumner
digitalWrite lyser sedan ett lager
sedan väntar den knappen timme eller minut knappen; den timmen knappen hoppar anpassningsprocessen börjar i minuten timmer
ytterligare ett lager lyser upp och börjar räkna
När du är klar med 60 sekunder tryck knappen timme, ändrade det knappar
loop()
lastSecond butiker när klockan till en sekund, om det är över testTime då det lägger till en andra
testTime var konfigurerad eller gick förbi tidigare standard är 1000
den om () s utvärdera om minut eller timme behöver ändras, jag la en if() inte används om du vill att din minut knappen räkna ned
alla av enhet variabler Suzanne, mUnit och hUnit ges värdet av de för sekunder, minuter och timmar
knapparna är frågade sedan om de är på
funktionen activate() anropas, beskrivs nästa
Activate()
Detta kommer att aktivera alla lysdioder för aktuell tid
* en anteckning om att inte använda ett skiftregister, Använd som märkt att - jag inte har testat så jag hoppas det fungerar för dig
När klockan är låga data kan skrivas till det och att skifta när klockan dras hög
gör detta samtidigt som lagret ska aktiveras
Det finns en fördröjning så att dina ögon kommer att se LED
då alla lager är avstängd innan nästa lager är laddad
Skölj och upprepa...
Layer()
en, två, fyra och åtta motsvarar värdet LED, i binärt, kommer att vände hög eller låg...
Det är mycket som kommer att blinka på sätt vet är en klocka
LED()
vänder i lager motsvarande tidsvärde