Recensisci!
Diventa un recensore per ricevere prodotti gratuiti o scontati!
Iscriviti
Se desideri, puoi effettuare un'iscrizione gratuita al forum per entrare nella nostra community.
Ricerca Avanzata
Pubblicità Adsense
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
I postatori più attivi del mese
Admin
 
AR_1029
 
Bix
 

Inserire data, ora RTC ds 3231

Andare in basso

Inserire data, ora RTC ds 3231

Messaggio Da papat il Mer Set 13, 2017 2:43 pm

Da un tuo video si evince chiaramente come aggiornare o impostare  ora e data al rtc con fishino.Pero' con RTC ds 3231 di questo sketch non so come fare.Puoi aiutarmi?
Codice:
#include <dht.h>


#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>


#include <DS3232RTC.h> //http://github.com/JChristensen/DS3232RTC
#include <TimeLib.h> //http://playground.arduino.cc/Code/Time (presente in gestione
// librerie, ma da installare – already present in ide library managere, but not yet installed
#include <Wire.h> //http://arduino.cc/en/Reference/Wire (vedi sopra – see above)
#include <LiquidCrystal_I2C.h> // libreria di gestione del display lcd
//--------------------addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
//
time_t t;
tmElements_t tm;
//
float temperatura = 0; // zona di memorizzazione della temperatura fornito da DS3231
float temp1 = 0; // zona di memorizzazione della temperatura in gradi celsius
int digits = 0; // zona di memorizzazione dei minuti e dei secondi da esporre
// sul display lcd
char tabmesi [37] = "genfebmaraprmaggiulugagosetottnovdic"; // tabella descrizione mesi
// above: italian month description, on three digits
int mese = 0; // zona di memorizzazione del mese corrente
int lavoro = 0; // zona di lavoro, utilizzata per calcoli intermedi
//
//********* routine di esposizione di data, ora e temperatura sul display lcd
//*************** time and temperature on lcd display **********************
//
void esponidati(void)
{
// esposizione dei dati rilevati sul timer di arduino
lcd.clear();
lcd.print(" ");
lcd.print(day());
lcd.print(' ');
//Arduino: modulo RTC DS3231 orologio digitale – digital clock
// doppio utilizzo SDA SCL, Real Time Clock, I2C, lcd 1620, orologio digitale, digital clock
mese = month(); // memorizza il mese
mese = mese - 1; // diminuisce di 1 il valore del mese poiche'
// la descrizione del primo mese (gen) inizia
// all'indirizzo zero della tabella mesi
lcd.print (tabmesi [(mese * 3)]); // espone la prima lettera del mese
lcd.print (tabmesi [(mese * 3 + 1)]); // espone la seconda lettera del mese
lcd.print (tabmesi [(mese * 3 + 2)]); // espone la terza lettera del mese
lcd.print(' ');
lcd.print(year());
lcd.setCursor(0, 1);
lcd.print(hour());
digits = (minute());
printDigits(); // routine esposizione zeri non significativi
digits = (second());
printDigits(); // routine esposizione zeri non significativi
lcd.print (" t:");
lcd.print (temp1);
}
//
//****routine visualizzazione minuti e secondi comprensivi di zeri non significativi*****
// ************* displays minutes and seconds, including non significant zeroes ***********
//
void printDigits()
{
lcd.print(':');
if (digits < 10)
lcd.print('0');
lcd.print(digits);
}
void setup(void)
{
Serial.begin (9600); // inizializza il monitor seriale
lcd.begin(16, 2); // inizializza il display e accende
lcd.backlight(); // lo sfondo
lcd.print (" buongiorno"); // goodday
delay (1500);
lcd.clear ();
setSyncProvider(RTC.get); // sincronizza il timer di Arduino con i dati presenti
// sul modulo RTC
lcd. clear ();
if (timeStatus() != timeSet) // verifica se la sincronizzazione e' ok
lcd.print(" orologio non"); // “clock not”
else
lcd.print(" orologio"); // “clock”
lcd.setCursor (0, 1);
lcd.print (" sincronizzato"); // “ syncronized”
delay (1500);

temperatura = RTC.temperature(); // rileva per la prima volta

}

void loop(void)
{
if (Serial.available() == 17) // controlla se e' in arrivo una stringa da 17
// caratteri (aa,mm,gg,hh,mm,ss)
{ // acquisisce la stringa con data ed ora
int y = Serial.parseInt();
tm.Year = y2kYearToTm(y);
tm.Month = Serial.parseInt();
tm.Day = Serial.parseInt();
tm.Hour = Serial.parseInt();
tm.Minute = Serial.parseInt();
tm.Second = Serial.parseInt();
t = makeTime(tm);
RTC.set(t); // aggiorna (setta) il modulo RTC
setTime(t); // aggiorna (setta) il modulo RTC
}


// fine del ciclo di acquisizione data ed ora
digits = (second()); // verifica se sono passati 10 secondi dal precedente
// rilevamento della temperatura
lavoro = digits % 10; // calcola il resto del secondo corrente diviso 10
if (lavoro == 9) // se si e' al nono secondo di ogni decade di minuto (se si e'
// al secondo 9, 19, 29, 39, 49 o 59 di ogni minuto)
// if we are at the 9,19,29... secondo of each minutes,
temperatura = RTC.temperature(); // rileva la temperatura – catch temperature
temp1 = temperatura / 4.0; // trasforma la temperatura in gradi celsius
esponidati(); // lancia la routine di esposizione dei dati
//Arduino: modulo RTC DS3231 orologio digitale – digital clock
// doppio utilizzo SDA SCL, Real Time Clock, I2C, lcd 1620, orologio digitale, digital clock
delay (1000); // aspetta un secondo prima di andare ad esporre
// nuovi dati, al fine di consentire al display
// una visualizzazione stabile
}
avatar
papat
Maker

Messaggi Messaggi : 182
Crediti Crediti : 278
Reputazione Reputazione : 3
Data d'iscrizione Data d'iscrizione : 17.10.15
Età Età : 71
Località Località : montalbano ionico

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Inserire data, ora RTC ds 3231

Messaggio Da Admin il Mer Set 13, 2017 2:50 pm

Ciao, quel codice fa un po' di tutto. Cosa vorresti che faccia?
avatar
Admin
♔ Amministratore

Messaggi Messaggi : 4264
Crediti Crediti : 11892
Reputazione Reputazione : 187
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 19
Località Località : Brescia

Vedi il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Re: Inserire data, ora RTC ds 3231

Messaggio Da papat il Mer Set 13, 2017 3:02 pm

deve impostarmi anno mese giorno ora.Credo che la temperatura se la prende da solo o no?
avatar
papat
Maker

Messaggi Messaggi : 182
Crediti Crediti : 278
Reputazione Reputazione : 3
Data d'iscrizione Data d'iscrizione : 17.10.15
Età Età : 71
Località Località : montalbano ionico

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Inserire data, ora RTC ds 3231

Messaggio Da papat il Mer Set 13, 2017 3:35 pm

Grazie ho risolto :ho caricato il programma SetSerial.ino su arduino e sul monitor ho scritto in ordine anno,mese,giorno,ora ,minuti,secondi.Funziona perfettamente.
avatar
papat
Maker

Messaggi Messaggi : 182
Crediti Crediti : 278
Reputazione Reputazione : 3
Data d'iscrizione Data d'iscrizione : 17.10.15
Età Età : 71
Località Località : montalbano ionico

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Inserire data, ora RTC ds 3231

Messaggio Da Admin il Gio Set 14, 2017 10:05 pm

Perfetto, grande Very Happy
avatar
Admin
♔ Amministratore

Messaggi Messaggi : 4264
Crediti Crediti : 11892
Reputazione Reputazione : 187
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 19
Località Località : Brescia

Vedi il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Tornare in alto


 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum