Puso:
:o :o :o :o
è la stessa cosa che mi dicono tutti i giorni ingegneri, dirigenti, ed altri...non che siamo colleghi???
![]()
![]()
Impossibile io sono disoccupato e studio per entrare nei Carabinieri ahahah
Claudio_FF:
Per quanto riguarda l'RTC (DS3231) non ho mai maneggiato la data ma solo l'ora, usando esclusivamente la libreria Wire (obbligatoria se non si vuole riscrivere a mano il protocollo i2c) e la tabella registri di pagina 11 del datasheet.In pratica con queste due funzioni:
void leggiRTC()
{
Wire.beginTransmission(0x68); // <--- indirizzo RTC su bus i2c
Wire.write(1); // <--- punta al registro 1 (minuti)
Wire.endTransmission();
Wire.requestFrom(0x68, 2); // <--- due registri da leggere
if(Wire.available() == 2)
{
minuti = BCDbin(Wire.read());
ore = BCDbin(Wire.read());
}
}
void impostaRTC()
{
Wire.beginTransmission(0x68); // <--- indirizzo RTC su bus i2c
Wire.write(0); // <--- punta al registro 0 (secondi)
Wire.write(0); // <--- azzera secondi RTC
Wire.write(binBCD(minuti)); // <--- imposta minuti RTC
Wire.write(binBCD(ore)); // <--- imposta ore RTC
Wire.endTransmission();
}E aiutandomi per la conversione binario<->BCD con queste due:byte BCDbin(byte n)
{
return ((n >> 4) * 10) + (n & 0x0F);
}
byte binBCD(byte n)
{
return ((n / 10) << 4) | (n % 10);
}Il tutto prevede due variabili globali 'ore' e 'minuti', che conterranno rispettivamente da 0 a 23 e da 0 a 59.
Allora i primi 2 sketch li ho capiti... ma l'ultimo no. Correggimi se sbaglio... i primi 2 servono a creare una sorta di database dove verranno memorizzati i secondi che poi ci serviranno per assemblare i minuti e le ore?
A cosa servirebbe e cos'è il BCD? Un codice come il Binario? Perdonami non ne conosco l'esistenza. Comunque se ci sono link affidabili e precisi per principianti come me dove viene spiegato come utilizzare l'RTC mica me ne potresti linkare qualcuno? Qui ormai non basta più il libro per cominciare a imparare il linguaggio di arduino, mi ci vuole qualcosa di più avanzato
Edit: e comunque si... funzionerà in I2C con la libreria Wire.h obbligatoria anche per la comunicazione con l'lcd