Problema con Modulo Tiny Rtc I2C

Salva a tutti,
ho dei problemi con questo modulo:

  1. Non so dove collegare i cinque pin del I2C
  2. Caricando lo sketch con il modulo scollegato, l'orologio parte lo stesso :fearful:
    e ogni volta che resetto arduino l'orario parte da capo, ossia se carico lo sketch ora, 13:47, arduino
    si memorizzerà quell'ora. Se fra 2 ore lo resetto, come ora mi da le 13:47.
    Aiutoo :sob: :sob:

Ma arduino ha una specie di orologio interno?

francesco_b:
Salva a tutti,
ho dei problemi con questo modulo:

  1. Non so dove collegare i cinque pin del I2C
  2. Caricando lo sketch con il modulo scollegato, l'orologio parte lo stesso :fearful:
    e ogni volta che resetto arduino l'orario parte da capo, ossia se carico lo sketch ora, 13:47, arduino
    si memorizzerà quell'ora. Se fra 2 ore lo resetto, come ora mi da le 13:47.
    Aiutoo :sob: :sob:

Ma arduino ha una specie di orologio interno?

  1. link all'oggetto, dal titolo non si capisce quale modulo hai (su mercato c'e' ne sono molti)
  2. no, Arduino non ha un orologio interno RTC vero e proprio.

Ecco il modulo:

Ecco il link del sito dov'è l'ho acquistato
Tiny RTC I2C

Sul Tiny RTC hai due serie di pin: una a 5 pin (essenziale) e una a 7 pin (completa).

Questo l'elenco dei pin:

GND GND
+5V alimentazione
DS uscita sensore temperatura DS18B20 (opzionale)
SCL bus I2C
SDA bus I2C
SQ uscita clock (1, 4096, 8192 o 32768 Hz)
BAT tensione batteria

Oltre al GND e +5V, bisogna connette i segnali del bus I2C sui rispettivi pin (su UNO corrispondono a A4-SDA ed A5-SCL)

Non ha indicato quale sketch!

Io utilizzo solamente i 5 Pin a sinistra, sbaglio?

Questo è lo sketch:

#include <Wire.h>
#include "RTClib.h"
RTC_Millis RTC;
char buffers[10];
long int time,Tempo;
void setup () {
    Wire.begin();
    Tempo = millis();
    Serial.begin(9600);
    RTC.begin(DateTime(__DATE__, __TIME__));
    Serial.println("OroloDuino");
}
 
void loop () {
    time = millis();
    if(time > (Tempo + 1000))
    {
        DateTime now = RTC.now();
        sprintf(buffers,  "%02d/%02d/%d", now.day(), now.month(), now.year());
        String B = String(buffers);
        Serial.println(B);
        sprintf(buffers,  "%02d:%02d:%02d", now.hour(), now.minute(),now.second());
        B = String(buffers);
        Serial.println(B);
        Tempo = millis();
    }
    
}

Come posso interpretare la temperatura?
A quali pin di arduino si collegato i pin del modulo?

Aiutoo :’( :’(

Guarda che @cyberhs ti aveva dato i collegamenti

http://www.elecrow.com/wiki/index.php?title=Tiny_RTC

Per far funzionare il modulo bastano i 5 pin da te usati.

La libreria che stai usando, in teoria, potrebbe funzionare da sola senza l’uso del modulo attraverso l’uso della funzione millis().

Il problema è che dopo un po’ ti accorgeresti che l’orologio non è molto preciso.

La stessa libreria può funzionare in accoppiata ad un modulo contenente il DS1307, garantendo una precisione superiore.

Lo sketch da te utilizzato è quello che si basa sul millis() e non sul modulo:

RTC_Millis RTC;

Infatti, per usarlo correttamente devi usare:

RTC_DS1307 RTC;

// Date and time functions using a DS3231 RTC connected via I2C and Wire Lib

#include <Wire.h>
#include "RTClib.h"  // Credit: Adafruit

RTC_DS1307 RTC;

void setup() {
 
  // Begin the Serial connection 
  Serial.begin(9600);
 
  // Instantiate the RTC
  Wire.begin();
  RTC.begin();
 
  // Check if the RTC is running.
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running");
  }

  // This section grabs the current datetime and compares it to
  // the compilation time.  If necessary, the RTC is updated.
  DateTime now = RTC.now();
  DateTime compiled = DateTime(__DATE__, __TIME__);
  if (now.unixtime() < compiled.unixtime()) {
    Serial.println("RTC is older than compile time! Updating");
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
 
  Serial.println("Setup complete.");
}

void loop() {
  // Get the current time
  DateTime now = RTC.now();   
 
  // Display the current time
  Serial.print("Current time: ");
  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();
 
  delay(10000);
}

Per la temperatura ti servono le librerie OneWire e DallasTemperature.
--> http://milesburton.com/Dallas_Temperature_Control_Library
--> http://www.pjrc.com/teensy/td_libs_OneWire.html

Gli esempi li trovi nelle pagine linkate.

Ho collegato i pin come nella vostra foto, ma niente, sulla seriale leggo questo:

Per la temperatura ti servono le librerie OneWire e DallasTemperature.
--> http://milesburton.com/Dallas_Temperature_Control_Library
--> http://www.pjrc.com/teensy/td_libs_OneWire.html

La libreria "Dallas" non funziona in quanto da questo errore:

La libreria la devi inserire in una cartella con lo stesso nome.
Leggo che la libreria DallasTemperature è nella libreria dallas.

A me l'esempio "single" compila con l'IDE 1.5.8.

Lo sketch usa 7.974 byte (24%) dello spazio disponibile per i programmi. Il massimo è 32.256 byte.
Le variabili globali usano 471 byte (22%) di memoria dinamica, lasciando altri 1.577 byte liberi per le variabili locali. Il massimo è 2.048 byte

Da precisare che il DS18B20 deve essere montato sul modulo in quanto opzionale e non mi sembra di vederlo nella foto.

Hai usato lo sketch che ho postato?

Da precisare che il DS18B20 deve essere montato sul modulo in quanto opzionale e non mi sembra di vederlo nella foto.

Hai usato lo sketch che ho postato?

Si, il risultato è la foto che ho precedentemente postato:

Cambia qualcosa se utilizzo Arduino Mega 2560?

La libreria la devi inserire in una cartella con lo stesso nome.
Leggo che la libreria DallasTemperature è nella libreria dallas.

Ok ora viene caricato, però non funziona in quanto sulla seriale ho:

Perché come detto da Cyb il DS deve essere saldato sul modulo nei tre pin in alto a sinistra.
Nella foto non c'è.

Il risultato delllo sketch "Dallas" conferma che manca il DS18B20: "found 0 devices".

Se usi la MEGA è ovvio che non ottieni alcun risultato: i pin SDA e SCL non sono quelli della UNO (A4 ed A5), ma si trovano su un connettore separato ai pin 20 e 21!

Se usi la MEGA è ovvio che non ottieni alcun risultato: i pin SDA e SCL non sono quelli della UNO (A4 ed A5), ma si trovano su un connettore separato ai pin 20 e 21!

Ho risolto collegando i pin SDA e SCL ai pin 20 e 21, utilizzando lo sketch postato da cyberhs.
Grazie a tutti e Auguri di Buon Anno!! :smiley: :smiley: :smiley: