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
