Buongiorno a tutti.
Ho un piccolo problema nel conteggio dei millisecondi con arduino Rev 3.
Lo scopo è quello di creare un semplice contatempo utilizzando il timer interno di arduino, senza utilizzare clock esterni.
Svilòuppato il codice allegato, ho riscontrato che in un tempo di 3 ore circa il mio "orologio" software è rimasto indietro di circa 1 minuto.
Ho commesso qualche errore nel software?
Oppure è una cosa normale?
Grazie a tutti per l'aiuto.
// Gestione LCD
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
unsigned int secondo = 1000;
unsigned int minuto = 60000;
unsigned int ora = 60*60000;
unsigned long mem_sec=0;
unsigned int mem_min=0;
unsigned int mem_ora=0;
int secondi=0;
int minuti=0;
int ore=0;
int giorni=0;
void setup() {
lcd.begin(16, 2);
};
void loop (){
unsigned long currentMillis = millis();
if(currentMillis - mem_sec > secondo) {
mem_sec=currentMillis;
secondi=secondi+1;
if (secondi==60) {
secondi=0;
minuti=minuti+1;
}
}
if (minuti==60) {
minuti=0;
ore=ore+1;
}
if (ore==24) {
ore=0;
giorni=giorni+1;
}
//stampa su LCD l'orario corrente
lcd.setCursor(0, 0);
lcd.print(giorni);
lcd.setCursor(6, 0);
lcd.print(ore);
lcd.setCursor(9, 0);
lcd.print(minuti);
lcd.setCursor(12, 0);
lcd.print(secondi);
lcd.setCursor(1, 1);
lcd.print(currentMillis);
if (secondi<10) {
lcd.setCursor(13, 0);
lcd.print(" ");
}
if (minuti<10) {
lcd.setCursor(10, 0);
lcd.print(" ");
}
if (ore<10) {
lcd.setCursor(7, 0);
lcd.print(" ");
}
}