Però fatemi capire la differenza perché ora sto facendo delle prove... sul mio RTC c'è scritto "TinyRTC I2C Module" quindi con cosa sto lavorando con RTC o con I2C? Nello sketch precedente ho impostato l'ora dell'RTC con
RTC.adjust(DateTime(2019, 05, 28, 23, 10, 00)); // decommentare per regolare ora e data (yyyy,mm,dd,hh,mm,ss)
Ora provando a scrivere sulla ram dell'RTC richiamando la libreria WIRE noto che i due orari sono diversi quindi sono un po confuso... questo è l'esempio che mi ha confuso:
#include <Wire.h> //include la libreria I2C
void setup()
{
Serial.begin(9600); //inizializza la seriale
Wire.begin(); //inizializza libreria
Wire.beginTransmission(0x68); //attiva la comunicazione con il DS1307 all'indirizzo RTC 0x68
Wire.write((byte)0x00); //il primo byte stabilisce il registro iniziale da scrivere i SECONDI da 0x00 a 0x59
Wire.write((byte)0x10); //il secondo byte specifica il tempo MINUTI da 0x00 a 0x59
Wire.write((byte)0x80 | 0x10); //il terzo byte specifica il tempo da 0x00 a 0x24
Wire.endTransmission();
}
void loop()
{
Wire.beginTransmission(0x68); //inizializza la trasmissione
Wire.write((byte)0x00); // partendo dall'indirizzo 0x00
Wire.endTransmission();
Wire.requestFrom(0x68, 3); //richiedo 3 byte dal dispositivo con indirizzo 0x68
byte secondi = Wire.read(); //recupero 1 byte dei secondi
byte minuti = Wire.read(); //recupero 1 byte dei minuti
byte ora = Wire.read(); //recupero i 1 byte delle ore
Serial.print("Orario corrente: ");
Serial.print(ora, HEX);
Serial.print(":");
Serial.print(minuti, HEX);
Serial.print(":");
Serial.println(secondi, HEX);
Serial.println();
delay(1000);
}