Wyświetlacz OLED + RTC DS1307
Już jakis czas temu przekonałem się, że
nie działa jak powinien, więc postanowiłem zmienić moduł zegara na RTC DS1307 w połączeniu z wyświetlaczem OLED i jak sie okazało, te dwa komponenty super ze soba współpracują.
Oba moduły sa proste do połączenia, działaja wspólnie bez konfliktów na I2C, do tego biblioteki sa ogólno dostępne (RTC) i (OLED)
Prezentowany na zdjęciu poniżej przykład jest bardziej zaawansowany, bo czasem reguluję świecenie diód LED (stąd widoczny tranzystor na zdjęciu, nie schemacie) ale istota układu pozostaje niezmieniona. Polecam
Przykład programu OLED + DS1307 dla Arduino
#include "U8glib.h" U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI #include #include "RTClib.h" #include RTC_DS1307 rtc; void setup() { Serial.begin(115200); if (! rtc.begin()) { Serial.println("noRTC"); while (1); } if (! rtc.isrunning()) { Serial.println("RTC dead"); } //odkomentuj aby ustawić date i godzine //rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //rtc.adjust(DateTime(2019, 8, 27, 17, 55, 00)); //rtc.adjust(DateTime(2019, 8, 17, 11, 34, 50)); } void loop() { modeButton(); selectorButton(); increaseButton(); DateTime now = rtc.now(); u8g.firstPage(); do { draw(now); } while ( u8g.nextPage() ); } void draw(DateTime now) { u8g.setFont(u8g_font_unifont); u8g.drawStr(0, 12, "Godzina"); enum {BufSize = 9}; char buf[BufSize]; snprintf (buf, BufSize, "%02d:%02d:%02d", now.hour(), now.minute(), now.second()); u8g.drawStr(32, 28, buf); enum {BufSize2 = 11}; char buf2[BufSize2]; snprintf (buf2, BufSize2, "%02d/%02d/%d", now.day(), now.month(), now.year()); u8g.drawStr(23, 48, buf2); }
Opublikowano: 28 sierpnia, 2019 przez Pan z Pogodna