Berlin klocka, Arduino Nano, DS1307 Realtidsklocka. 74HC595N 8-bitars skiftregister. (4 / 5 steg)
Steg 4: SKIFT register
Just i detta skede har vi tre värden:-
minFivesBar1 (8 bitar används för LSB av andra raden)
minFivesBar2 (3 bitar som används för MSB av andra raden)
minBar (4 bitar som används för den första raden)
Nu vill jag bara använda 3 Skift register så jag måste kombinera minBar och minFivesBar i i samma register, som tack och lov är lätt att göra.
Fil rotera minBar 3 gånger och lägga till i registret.
dvs.
minBar = minBar << 3.
minFivesBar2 = minFivesBar2 + minBar;
Som lämnar en sista positionen i 8-bitars register och som används för andra pulsen, och genomförs av bestämma där sekunderna är udda eller jämnt och sedan lägga till 128 filen som krävs. Koden ser ut så...
om (sekunder för %2)
{
minFivesBar2 = minFivesBar2 + 128;
}
annat
{
minFivesBar2 = minFivesBar2 – 128;
}
som jag skrev detta verkade det inte rätt så sist jag kolla inte endast om numret var även utan även om det var (och) större än 128.
Timmarna måste igen, för det första delas med 5 sedan träna modulus detta ger dig två numrerar, sedan som innan arbetet ut "kör" totalt och sedan lagra två 4 bitvärden i en registrera filen vrida ett värde 4 gånger så det upptar 4 MSB och lägga till andra numret som är i 4 LSB.
Kommandot för att köra 595 seriell registret är mycket lätt och kräver 4 argument.
vilka stift ska användas för data
vilka stift att använda för klocka
Om du vill sända MSB eller LSB först
Data som ska skickas.
När kommandot har körts måste data vara låst genom att ställa relevanta spärr stiftet låg då hög.
Justering
Jag var inte riktigt säker på hur jag skulle justera denna klocka när jag började att bygga det, men då jag bestämde mig att eftersom jag hade nog input reservdelar skulle jag ha 4 knappar och en strömbrytare och generera en sub rutin för att ställa in RTC beroende på vilken knapp trycks. Jag har också gjort en GPS klocka som kan användas för att jämföra RTC
GPS och korrekt det som krävs (men det är för en annan instructable!)