DS1307-reaaliaikainen kello (RTC) on laajalti käytetty moduuli ajan pitämiseen Arduino-projekteissa. Se ylläpitää tarkkaa aikaa, vaikka Arduino on virtalähde, sen akun varmuuskopion ansiosta. Tässä opetusohjelmassa opit kuinka yhdistää ja ohjelmoida DS1307 RTC -moduulin Arduinon kanssa näyttääksesi ja päivittääksesi ajan.
Mitä tarvitset
- Arduino -lautakunta (esim. UNO, Mega, Nano)
- DS1307 RTC -moduuli
- Leipälevy- ja hyppyjohdot
- Tietokone, jossa Arduino IDE on asennettu
- Kirjastot: Rtclib
Vaihe 1: DS1307 RTC -moduulin johdotus
DS1307 RTC kommunikoi Arduinon kanssa I2C -protokollan kautta.
Yhteydet
Rtc -nasta | Arduino -nasta |
---|---|
VCC | 5V |
Hölynpöly | Hölynpöly |
SDA | A4 |
SCL | A5 |
Huomaa: Jos käytät Arduino -korttia omistettujen SDA- ja SCL -nastaiden kanssa (esim. Mega), kytke RTC SDA/SCL -nastat niihin sen sijaan.
Vaihe 2: Vaaditun kirjaston asentaminen
Työskentelet DS1307 RTC: n kanssa, tarvitset Rtclib kirjasto.
Vaiheet RTCLIB: n asentamiseksi
- Avaa Arduino IDE.
- Mennä jhk Luonnos> Sisällytä kirjasto> Hallitse kirjastoja.
- Etsi "RTCLIB" kirjastonhallinnasta.
- Napsauttaa Asentaa.
Vaihe 3: Esimerkkikoodin lataaminen
Tässä on esimerkki luonnos näyttää nykyinen päivämäärä ja aika DS1307 -moduulista:
Esimerkkikoodi
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
void setup() {
Serial.begin(9600);
// Initialize the RTC
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
// Check if the RTC is running
if (!rtc.isrunning()) {
Serial.println("RTC is NOT running! Setting the time...");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now();
// Display the time
Serial.print(now.hour());
Serial.print(":");
if (now.minute() < 10) {
Serial.print("0");
}
Serial.print(now.minute());
Serial.print(":");
if (now.second() < 10) {
Serial.print("0");
}
Serial.println(now.second());
// Display the date
Serial.print(now.day());
Serial.print("/");
Serial.print(now.month());
Serial.print("/");
Serial.println(now.year());
delay(1000); // Update every second
}
Vaihe 4: Ajan säätäminen
Jos RTC ei ole käynnissä tai aika on päivitettävä, voit käyttää seuraavaa riviä setup()
Toiminto:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
-
F(__DATE__)
jaF(__TIME__)
ovat makroja, jotka asettavat päivämäärän ja kellonajan tietokoneeltasi, kun lähetät luonnoksen.
Aseta tietyn ajan manuaalisesti käyttämällä:
rtc.adjust(DateTime(2025, 1, 1, 12, 0, 0)); // YYYY, MM, DD, HH, MM, SS
Vaihe 5: RTC -tietojen käyttäminen projekteissasi
DS1307 voi tarjota aikatietoja monille sovelluksille, kuten:
- Tietojen kirjaaminen: Aikaleiman anturin lukemat tai tapahtumat.
- Hälytykset ja ajastimet: Laukaisevat toimenpiteet tiettyihin aikoihin perustuen.
- Kellot: Luo digitaalisia tai analogisia kelloja näytöillä.
Esimerkki: Toiminnan käynnistäminen tiettyyn aikaan
void loop() {
DateTime now = rtc.now();
// Check if it's 8:00 AM
if (now.hour() == 8 && now.minute() == 0 && now.second() == 0) {
Serial.println("It's 8:00 AM!");
}
delay(1000);
}
Vianetsintä
-
RTC: tä ei löydy:
- Varmista SDA- ja SCL -yhteydet.
- Varmista, että akku on asennettu oikein.
-
Väärä aika:
- Käyttää
rtc.adjust()
Palauttaa aika. - Tarkista tyhjennetty tai puuttuva RTC -akku.
- Käyttää
-
Epäjohdonmukaiset tiedot:
- Varmista vakaa virtalähde Arduino- ja RTC -moduuliin.
DS1307 RTC: n sovellukset
- Reaaliaikaiset kellot ja hälytykset
- Aikapohjaiset automaatiojärjestelmät
- Tietojen kirjaaminen aikaleimoilla
- Muistutusjärjestelmät
Johtopäätös
DS1307 RTC -moduuli on erinomainen työkalu Ajankäyttötoimintojen lisäämiseen Arduino -projekteihisi. Seuraamalla tätä opasta voit määrittää RTC: n, näyttöajan ja päivämäärän ja sisällyttää sen eri sovelluksiin. Kokeile yhdistää DS1307 näytöihin tai antureihin rakentaaksesi vielä dynaamisempia projekteja!