Orologio arduino (RTC DS1307)

Salve a tutti, ho un problema con Arduino. Più precisamente non riesco a visualizzare l’ora e la data sulla porta seriale. Utilizzando un RTC DS1307 come quello in allegato e questo programma:

// 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);
}

Sulla porta seriale leggo caratteri incomprensibili. Ho cercato su internet ma non ho trovato nulla che mi possa aiutare.
Ho bisogna anche di uno sketch per visualizzare data e ora su un LCD. Grazie in anticipo.

images.jpg

Salve, prima di tutto, essendo il tuo primo post, ti consiglio di presentarti QUI e di leggere con attenzione il REGOLAMENTO ...

... poi ... è un argomento di cui si è parlato molte volte ... fai una ricerca sul forum e trovi addirittura l'intero progetto fatto !!!

Guglielmo

Scusami ma non ho trovato niente (probabilmente sarò io stupido), potresti darmi qualche indicazione?

Leggitelo tutto, QUESTO, è un po' lungo, a volte divertente, a volte strano, ma di sicuro ... c'è molto da imparare !!! XD

Guglielmo

P.S. : La "saga" continua poi QUI

Sulla porta seriale leggo caratteri incomprensibil

comunque per questo discorso, secondo me non hai settato il monitor seriale alla velocita giusta (57600)

Brunello:

Sulla porta seriale leggo caratteri incomprensibil

comunque per questo discorso, secondo me non hai settato il monitor seriale alla velocita giusta (57600)

Magari dirgli “prova con 9600”? :slight_smile:

se nello sketch c'e' 57600, perche' devo dirgli 9600

Per fargli fare ancora piu' confusione ?

Grazie a tutti, ho risolto il problema impostando la velocità a 9600. Ora, scusate se vi rompo :sweat_smile:, potreste dirmi come faccio ad impostare l'ora e la data?

Quale libreria usi? Quella di Adafruit? Devi allora usare adjustTime(DATA, ORA). Adafruit ha una guida: https://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/arduino-library

Altrimenti ce ne sono anche altre, ognuna coi suoi metodi.

Si uso quella, e suppongo che al posto di DATE e TIME devo scrivere la data e l’ora. Ma come devo scriverle? O meglio, in quale formato?

Ma a te leggere le cose fa fatica ??? ]:D

Perché se ti fossi preso la briga, [u]solo di dare un'occhiata[/u] alla libreria di Adafruit avresti letto :

...
DateTime::DateTime (const char* date, const char* time) {
    // sample input: date = "Dec 26 2009", time = "12:34:56"
...

... non mi sembra difficile no ? Un paio di stringhe in formato char array fatte come scritto nel commento !

Guglielmo

Scusa Guglielmo ma non è che non ho letto, il problema è che non ho capito è per questo che chiedo. Se avessi capito non farei domande. Quindi ora domando, sempre per favore, se potete postarmi il programma completo. Grazie XD.

Nikof: Scusa Guglielmo ma non è che non ho letto, il problema è che non ho capito è per questo che chiedo. Se avessi capito non farei domande.

Se sei a questo livello ... non sarebbe il caso che prima di imbarcarti in programmi come questo ... ti mettessi a studiare le BASI del C ??? Perché un stringa fatta con un array di char ... fa parte veramente delle basi ! :roll_eyes:

Trovi molto interessante/educativo continuare a fare solo dei copia/incolla ... [u]senza capire quello che stai facendo[/u] ??? Non trovi che impareresti molto di più e capiresti le cose ... dedicando un po' di tempo a studiare ed ha provare invece che ... chiedere la "pappa fatta" ? :roll_eyes:

E comunque, per una inizializzazione rapida della data/ora, il link che ti ha postato leo (il tutorial di Arafruit) riporta un modo estremamente semplice di come fare ... :roll_eyes:

Guglielmo

Partiamo dal presupposto che a me piace la programmazione, solo che c'è un piccolo problema, in questo momento non ho tempo di mettermi a rivedere il linguaggio perché la mattina vado a scuola, il pomeriggio vado a fare l'alternanza scuola-lavoro e la sera mi tocca studiare perché ho gli esami. Mi è stato chiesto di fare una cosa e per farla non ho i requisiti quindi sto chiedendo a voi. Ho visto arduino per la prima volta 2 settimane fa e non posso capire subito tutto quello che riguarda la sua programmazione. Detto questo, se volete aiutarmi bene, oppure tolgo il disturbo.

Dichiarare :

char miaData[] = "May 19 2014";
char miaOra[]  = "20:30:00";

e poi chiamare

RTC.adjust(DateTime(miaData, miaOra));

Guglielmo

Grazie mille, finiti gli esami mi metterò a studiare così da poterti chiedere qualcosa di più complesso. ;)