Wyświetlacz OLED + RTC DS1307

oled

Już jakis czas temu przekonałem się, że RTC DS1302 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) ale istota układu pozostaje niezmieniona. Polecam

oledrtc schema

#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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *