Jeśli potrzebujemy w naszym programie na Arduino Pro Mini dokładnej daty i czasu wtedy możemy podłączyć moduł czasu rzeczywistego na układzie DS1307.
Podłączenie:
- VCC zegara do szyny VCC 5V płytki prototypowej
- GND zegara do szyny GND płytki prototypowej
- SDA zegara (żółty przewód) do A4 Arduino Pro Mini
- SCL zegara (zielony przewód) do A5 Arduino Pro Mini
Przygotowanie systemu:
- ściągnięcie biblioteki https://github.com/adafruit/RTClib
Program do obsługi zegara i wyświetlania na ekranie LCD oraz przez serial monitor.
Linię : RTC.adjust(DateTime(__DATE__, __TIME__)); można zaremować i wgrać program ponownie po ustawieniu prawidłowej daty i czasu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <Wire.h> #include <LiquidCrystal_I2C.h> #include "RTClib.h" RTC_DS1307 RTC; LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Addr, En, Rw, Rs, d4, d5, d6, d7, backlightpin, polarity String dateLcd; void setup () { Serial.begin(9600); Wire.begin(); RTC.begin(); lcd.begin(16,2); lcd.backlight(); // following line sets the RTC to the date & time this sketch was compiled RTC.adjust(DateTime(__DATE__, __TIME__)); if (! RTC.isrunning()) { Serial.println("RTC is NOT running!"); } } void loop () { DateTime now = RTC.now(); dateLcd = String(now.year(),DEC).substring(4,2) + "/" + String(now.month(),DEC) + "/" + String(now.day(),DEC) + " " + String(now.hour(), DEC) + ":" + String(now.minute(), DEC) + ":" + String(now.second(), DEC); Serial.println(dateLcd); lcd.setCursor(0, 0); lcd.print(dateLcd); delay(1000); } |
Warto zobaczyć:
https://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/understanding-the-code
https://github.com/adafruit/RTClib