![]() In questo esempio vengono scritte sulla seriale l'ora (variabile "hours") i minuti (variabile "minutes") ed i secondi (variabile "seconds") trascorsi dall'accensione della scheda Arduino. Le variabili possono essere inizializzate a piacimento (via software o hardware ad es. con display e pulsanti). Il codice di questo semplice esempio può essere implementato in progetti che richiedano l'orario (es. cronotermostato) senza aggiungere componenti esterni. Codice: #define MAX_MILLIS_VALUE 34359738 unsigned long current_millis_value = 0; unsigned long previous_millis_value = 0; unsigned long m = 0; unsigned int seconds = 0; unsigned int minutes = 0; unsigned int hours = 0; void setup() { Serial.begin(9600); } void loop() { cli(); // disable interrupts current_millis_value = millis(); sei(); // enable interrupts // overflow millis() if (current_millis_value < previous_millis_value) m += MAX_MILLIS_VALUE - previous_millis_value + current_millis_value; else m += current_millis_value - previous_millis_value; seconds += m / 1000; m = m % 1000; minutes += seconds / 60; seconds = seconds % 60; hours += minutes / 60; minutes = minutes % 60; hours = hours % 24; previous_millis_value = current_millis_value; //visualizzo sulla seriale Serial.print("Ore: "); Serial.print(hours); Serial.print(" Minuti: "); Serial.print(minutes); Serial.print(" Secondi: "); Serial.println(seconds); delay(150); } |
Elettronica >