Real time clock con DS1307 - chiarimenti su errore

Salve a tutti amici. Come ho già premesso nel post di presentazione, non solo sono quasi completamente a digiuno in materia elettronica (sto cominciando a studiarla), ma da pochissimo ho acquistato un clone di Arduino Uno. Finora ho realizzato qualche semplicissimo sketch (led e buzzer) ed oggi mi volevo cimentare con qualcosa di più serio. Quindi ho pensato di realizzare un Real Time Clock con un circuito integrato DS1307. Tutto bene. Sono riuscito ad effettuare tutti i collegamenti e l’orologio funziona perfettamente (anche con la batteria di Backup). Quello che non riesco a fare è caricare orario e data correnti senza doverli impostare manualmente. In rete ho trovato vari sketches che potrebbero andare bene, uno dei quali è il seguente:

#include <DS1307RTC.h>
#include <Time.h>
#include <Wire.h>

void setup() {
  Serial.begin(9600);
  while (!Serial) ; // wait for serial
  delay(200);
  Serial.println("DS1307RTC Read Test");
  Serial.println("-------------------");
}

void loop() {
  tmElements_t tm;

  if (RTC.read(tm)) {
    Serial.print("Ok, Time = ");
    print2digits(tm.Hour);
    Serial.write(':');
    print2digits(tm.Minute);
    Serial.write(':');
    print2digits(tm.Second);
    Serial.print(", Date (D/M/Y) = ");
    Serial.print(tm.Day);
    Serial.write('/');
    Serial.print(tm.Month);
    Serial.write('/');
    Serial.print(tmYearToCalendar(tm.Year));
    Serial.println();
  } else {
    if (RTC.chipPresent()) {
      Serial.println("The DS1307 is stopped.  Please run the SetTime");
      Serial.println("example to initialize the time and begin running.");
      Serial.println();
    } else {
      Serial.println("DS1307 read error!  Please check the circuitry.");
      Serial.println();
    }
    delay(9000);
  }
  delay(1000);
}

void print2digits(int number) {
  if (number >= 0 && number

Il problema è che alla verifica ottengo sempre questo errore:

Arduino:1.6.9 (Windows 7), Scheda:“Arduino/Genuino Uno”
In file included from C:\Users\Ludovico\Desktop\Varie\Arduino\lx280_h37\prova3\prova3.ino:1:0:
C:\Users\Ludovico\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:19:22: error: ‘tmElements_t’ has not been declared

  • static bool read(tmElements_t &tm);*
  • ^*
    C:\Users\Ludovico\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:23: error: ‘tmElements_t’ has not been declared
  • static bool write(tmElements_t &tm);*
  • ^*
    C:\Users\xxxxx\Arduino\lx280_h37\prova3\prova3.ino: In function ‘void loop()’:
    prova3:14: error: ‘tmElements_t’ was not declared in this scope
  • tmElements_t tm;*
  • ^*
    prova3:16: error: expected primary-expression before ‘)’ token
  • if (RTC.read™) {*
  • ^*
    prova3:18: error: expected primary-expression before ‘.’ token
  • print2digits(tm.Hour);*
  • ^*
    prova3:20: error: expected primary-expression before ‘.’ token
  • print2digits(tm.Minute);*
  • ^*
    prova3:22: error: expected primary-expression before ‘.’ token
  • print2digits(tm.Second);*
  • ^*
    prova3:24: error: expected primary-expression before ‘.’ token
  • Serial.print(tm.Day);*
  • ^*
    prova3:26: error: expected primary-expression before ‘.’ token
  • Serial.print(tm.Month);*
  • ^*
    prova3:28: error: expected primary-expression before ‘.’ token
  • Serial.print(tmYearToCalendar(tm.Year));*
  • ^*
    prova3:28: error: ‘tmYearToCalendar’ was not declared in this scope
  • Serial.print(tmYearToCalendar(tm.Year));*
  • ^*
    C:\Users\Ludovico\Desktop\Varie\Arduino\lx280_h37\prova3\prova3.ino: In function ‘void print2digits(int)’:
    prova3:45: error: expected ‘)’ at end of input
  • if (number >= 0 && number*
  • ^*
    prova3:45: error: expected statement at end of input
    prova3:45: error: expected ‘}’ at end of input
    exit status 1
    ‘tmElements_t’ was not declared in this scope

Mi aiutate a capire cosa sbaglio? Grazie a tutti.

Per primo lo sketch non é completo. Manca qualcosa alla fine.

Per secondo mandaci il link alla libreria DS1307RTC.h che usi; ci sono tante librerie in giro.

Ciao Uwe

Ciao hai incollato male l'esempio (o è sbagliato), ad esempio:

tmElements_t tm;

va messo prima del setup nelle dichiarazioni, (vedi gli esempi)

Stefano

Grazie @Uwe e @Stefano per le rapide risposte. Domani controllo e poi vi faccio sapere. Per il momento buonanotte.