RTC DS1307 con arduino

Continuo la serie dei miei tutorial sull’RTC DS1307 ed Arduino, in questo articolo ti mostro come puoi utilizzare un RTC DS1307 già assemblato.

RTC DS1307

Rispetto alla shield RTC di cui puoi leggere i precedenti articoli:

Questa scheda RTC DS1307 può esserti utile per realizare gli stessi progetti con il vantaggio delle ridotte dimensioni oltre al fatto che non devi assemblartela.

Inoltre ho acquistato questa scheda per poterla utilizzare nel mio progetto RTC Rainbow Ring V3 orologio luminoso che nei prossimi articoli utilizzerà la RTC DS1307 per recuperare l’ora esatta anche in mancanza di alimentazione grazie alla batteria tampone di cui è dotata:

RTC DS1307 batteria tampone

Schema dell’RTC DS1307

la scheda è già assemblata, a parte i pin, questo ti permette di decidere se dalsare dei pin lineari, dei pin ad angolo o degli strip femmina, utilizza il tipo di connessioni pin necessarie al tuo progetto.

Su entrambi i lati, presenta una linea di pin a cui saldare gli strip per connettere la shield al tuo progetto:

RTC DS1307 connessioni SCL,SDA,Vcc,Gnd

io ho saldato degli strip semplici, maschio, da entrambi i lati per poterla utilizzare sulla breadboard.

In realità pensando di utilizzarla con la Rainbow Ring V3 avrei potuto saldare degli strip femmina a 90° per collegare agevolmente le due schede nel mio progetto.

I pin delle due schede coincidono in quanto presentano la stessa sequenza: SCL,SDA,Vcc,Gnd:

RGB RingV3 Diagram

Sketch per l’RTC DS1307

Per provare l’RTC DS1307 ho utilizzato la libreria RTCLib utilizzata anche negli altri articoli e l’esempio DS1307:

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {
    DateTime now = RTC.now();
    
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
    
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
    
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    
    Serial.println();
    delay(3000);
}

Buon divertimento !!!

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/rtc-ds1307.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.