Ang DS1307 real-time na orasan (RTC) ay isang malawak na ginagamit na module para sa pagpapanatili ng oras sa mga proyekto ng Arduino. Nagpapanatili ito ng tumpak na oras kahit na ang Arduino ay pinapagana, salamat sa backup na baterya ng onboard. Sa tutorial na ito, malalaman mo kung paano kumonekta at magprograma ng module ng DS1307 RTC kasama ang Arduino upang ipakita at i -update ang oras.
Ano ang kakailanganin mo
- Lupon ng Arduino (hal., uno, mega, nano)
- DS1307 RTC Module
- Mga wire ng tinapay at jumper
- Isang computer na may naka -install na Arduino IDE
- Mga Aklatan: Rtclib
Hakbang 1: Wiring ang module ng DS1307 RTC
Ang DS1307 RTC ay nakikipag -usap sa Arduino sa pamamagitan ng protocol ng I2C.
Mga koneksyon
RTC PIN | Arduino Pin |
---|---|
VCC | 5v |
Gnd | Gnd |
SDA | A4 |
SCL | A5 |
Tandaan: Kung gumagamit ng isang Arduino board na may nakalaang SDA at SCL pin (hal., MEGA), ikonekta ang RTC SDA/SCL pin sa mga iyon.
Hakbang 2: Pag -install ng kinakailangang library
Upang gumana sa DS1307 RTC, kakailanganin mo ang Rtclib Library.
Mga Hakbang upang I -install ang RTCLIB
- Buksan ang Arduino IDE.
- Pumunta sa Sketch> Isama ang Library> Pamahalaan ang mga aklatan.
- Maghanap para sa "RTCLIB" sa manager ng aklatan.
- Mag -click I -install.
Hakbang 3: Pag -upload ng halimbawa ng code
Narito ang isang halimbawa ng sketch upang ipakita ang kasalukuyang petsa at oras mula sa module ng DS1307:
Halimbawa ng code
#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
}
Hakbang 4: Pag -aayos ng oras
Kung ang RTC ay hindi tumatakbo o kailangang ma -update ang oras, maaari mong gamitin ang sumusunod na linya sa setup()
Function:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
-
F(__DATE__)
atF(__TIME__)
Ang mga macros ba na nagtatakda ng petsa at oras mula sa iyong computer kapag nai -upload mo ang sketch.
Upang manu -manong magtakda ng isang tukoy na oras, gamitin:
rtc.adjust(DateTime(2025, 1, 1, 12, 0, 0)); // YYYY, MM, DD, HH, MM, SS
Hakbang 5: Gamit ang data ng RTC sa iyong mga proyekto
Ang DS1307 ay maaaring magbigay ng data ng oras para sa iba't ibang mga aplikasyon, tulad ng:
- Pag -log ng Data: Pagbabasa o mga kaganapan sa timestamp sensor.
- Mga alarma at timer: Mga aksyon sa pag -trigger batay sa mga tiyak na oras.
- Mga orasan: Lumikha ng mga digital o analog na orasan na may mga pagpapakita.
Halimbawa: Pag -trigger ng isang aksyon sa isang tiyak na oras
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);
}
Pag -aayos
-
Hindi natagpuan ang RTC:
- Patunayan ang mga koneksyon sa SDA at SCL.
- Tiyaking naka -install nang tama ang baterya.
-
Maling Oras:
- Gumamit
rtc.adjust()
upang i -reset ang oras. - Suriin para sa isang pinatuyo o nawawalang baterya ng RTC.
- Gumamit
-
Hindi pantay na data:
- Tiyakin ang matatag na supply ng kuryente sa module ng Arduino at RTC.
Mga aplikasyon ng DS1307 RTC
- Mga real-time na orasan at alarma
- Mga sistema ng automation na batay sa oras
- Ang pag -log ng data na may mga timestamp
- Mga sistema ng paalala
Konklusyon
Ang module ng DS1307 RTC ay isang mahusay na tool para sa pagdaragdag ng pag -andar ng timekeeping sa iyong mga proyekto sa Arduino. Sa pamamagitan ng pagsunod sa gabay na ito, maaari mong i -set up ang RTC, ipakita ang oras at petsa, at isama ito sa iba't ibang mga aplikasyon. Eksperimento sa pagsasama ng DS1307 sa mga display o sensor upang makabuo ng mas maraming mga dynamic na proyekto!