Göra en Atom synkroniserad klocka från en 1950-slav ringa (4 / 6 steg)
Steg 4: Skriva kod att köra klocka
Klockan koden kan delas upp i två delar. koden som kommer att öka klockan till en viss tidpunkt, och den kod som blir aktuell tid utgör internet.Klockan advance koden har några särskilda överväganden:
- Måste till för tiden i 30-sekundersintervall.
- Om den visade tiden bakom, ska förskottet köras snabbare tills det fångas.
- Om den visade tiden ligger långt efter, och det går snabbare att bara vänta på tid att fånga upp snarare än att försöka få klockdisplay fångas upp, bör sedan klockan helt enkelt vänta.
- Klockan matematik har för att kunna hantera middagstid/midnatt, där tiden effektivt löper runt noll.
- Klockan ska hålla reda på positionen för händerna, så att detta inte behöver återställas om strömmen försvinner.
- Det måste finnas en mekanism för att först definiera positionen för händerna, så att programmet kan flytta dem därför.
Huvudloop ansökan håller kontrollera om den aktuella tidpunkten är mer än 30 sekunder före den visade tiden. Om det är, då en rörelse som förskott startas och den nya visade tiden registreras i Arduinoen EEPROM. Ett förskott anger inledningsvis spole enhet pin hög. En andra del av koden från huvudloop kontrollerar om perioden spole puls längd har nått, och så ange PIN-koden låg igen. Koden kommer inte prova och utföra en annan puls för en viss tid. Jag slutade med en spole på tiden av 150ms och minst off tid för 850ms, men detta kan behöva justeras beroende på din klocka rörelse.
Koden som lagrar tiden i EEPROM använder några knep att få så mycket liv av Arduino s EEPROM som möjligt. Varje bit av EEPROM har ett begränsat antal skriva cykler innan det kommer att misslyckas. Om du vill sträcka ut det här, använde jag en bit för varje 30-sekunders intervall att klockan kan visa (totalt 1440 möjliga positioner). Det använder 180 byte av EEPROM för att lagra detta. Vid midnatt och klockan tolv rensas matrisen till alla nollor. Sedan efter första 30 andra anges intervallet den första biten. På 1 minut ligger lite andra och så vidare tills jus innan midnatt eller middagstid alla bitarna i matrisen anges. Varje bit är därför skriven endast 4 gånger om dagen. Det borde ge en livslängd över 15 år (förmodligen mycket längre).
När klockan är påslagen, läses visas senast tillbaka från EEPROM.
Justera den visade tiden sker via en enkel webbsida som klockan fungerar. Detta var också användbart under felsökning.