Arduino klocka projekt för Ahmed (5 / 8 steg)
Steg 5: Att få riktigt med tid - att lägga till en realtidsklocka
Nu, måste du inse begränsningarna av en programvara simulerade klocka. Hur håller en klocka eller telefon exakt tid? Först behöver du en kontinuerlig strömförsörjning, och för det andra, du behöver en exakt kristall. En realtidsklocka modul hand tar om detta för oss. När den är inställd, så länge det är litet batteri har makt, håller det tiden exakt till flera sekunder per dag.
Adafruit's RTC modul använder samma I2C bussen som displayen använder. Hur fungerar detta? Varje objekt har en unik adress och biblioteken hantera resten för oss.
Starta realtidsklocka < br > RTC_DS1307 rtc = RTC_DS1307();
I setup() måste vi söka om klockan är igång och ange om det inte är. Sedan kan vi initiera variabeln använder den aktuella tiden.
börja och ställa in klockan om inte redan kör < br > rtc.begin();
bool setClockTime =! rtc.isrunning();
Serial.Print("RTC.isRunning() =");
Serial.println(!setClockTime);
om (setClockTime) {
RTC.ADJUST(datetime(uploadDateTime));
}
initialisera tid variabler
DateTime tid = rtc.now();
timmar = time.hour();
minuter = time.minute();
sekunder = time.second();
lastMillis = millis();
Vi måste kontrollera RTC tiden varje så ofta eftersom vi satsar fortfarande på interna räknaren till increment sekunder. Hur ofta? Vad sägs om en gång i timmen:
Kolla RTC längst upp på timme och återställa variabler < br > om (minuter == 0 & & sekunder == 0) {
DateTime tid = rtc.now();
timmar = time.hour();
minuter = time.minute();
sekunder = time.second();
}
Tid att utforska:
- RTC modulerna ger också information om datum. Hur skulle du ställa ett larm för endast vardagar?
- Hur exakt är din RTC modul?
- Koden för att ställa tiden variabler i setup() och loop() är nästan identiska. Kan vi skapa en funktion som används av båda?