Modul za praćenje vremena (RTC) DS1307


različiti projekti traže poznavanje točnog vremena a to ćete najlakše saznati uz ovaj modul

 U ovom primjeru koristit ćemo gotov modul s DS1307 čipom, kvarcnim satom i rezervnom baterijom za izradu vlastitog sata. 

     Za komunikaciju s Arduino pločom koristi se komunikacijsko sučelje temeljeno na I2C sabirnici. Spojimo SCL i SDA linije na odgovarajuće pinove na našem Uno R3. Potrebne biblioteke i kod za upravljanje satom mogu se pronaći na Arduino web stranici.   

spajanje
  • priključite napajanje na modul (+ 5V)
  • priključite masu (-) na modul (GND)
  • SCL i SDA linije spojene su na odgovarajuće Arduino pinove
  • povezujemo displej na isti način kao u prethodnim projektima
//pozivanje potrebnih biblioteka
#include "Wire.h"
#include "Time.h"
#include "DS1307RTC.h"
#include "LiquidCrystal.h"

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Definiranje pinova

void setup() {
  lcd.begin(16,2);
}

void loop() {
 tmElements_t tm; //Inicjalizacija modula DS1307
  if (RTC.read(tm)) {
   lcd.setCursor(0,0);
   lcd.print(tm.Hour); //ispis sata
   lcd.print(":");
   lcd.print(tm.Minute);//ispis minuta
   lcd.print(":");
   print2digits(tm.Second);//ispis sekunda
   lcd.setCursor(0,1);
//ispis datuma
   lcd.print(tm.Day);
   lcd.print('/');
   lcd.print(tm.Month);
   lcd.print('/');
   lcd.print(tmYearToCalendar(tm.Year));

  } else {
    if (RTC.chipPresent()) {
      lcd.setCursor(0,0);
      lcd.print("Sat zaustavljen!");
      
    } else {
      lcd.setCursor(0,0);
      lcd.print("Pogreška čitanja");
    } 
  }
 delay(1000);
}

//Funkcja koja ispisuje vrijednosti na 2 
// decimalna mjesta
void print2digits(int number) {
 if (number >= 0 && number < 10) {
  lcd.print('0');
}
  lcd.print(number);
}