La funzione millis() dovrebbe restituire il numero di millesecondi dall'avvio di Arduino.
Ora, come è possibile che la millis sulla mia scheda Uno restituisca dei "millesecondi" più corti di un millisecondo vero?!?
Questo è un codice veloce di prova che ho fatto, ogni 10 secondi reali ne conto 12 a monitor...possibile che il colpevole possa essere itoa? In che modo fisicamente ciò influenza, accelerando, il processore?
grazie in anticipo per l'aiuto, purtroppo anche con il cerca non ho trovato una soluzione...
char test[2]; //text has to end with '\0' !!!!!!
int seclamp=8;
unsigned long tempo;
int secondi=60;
int minuti=0;
int x=1;
/* ----------------------------------------------------------------- */
/** MAIN program Setup
*/
void setup() // run once, when the sketch starts
{
Serial.begin(9600);
tempo=millis();
seclamp=8;
}
/* ----------------------------------------------------------------- */
/** MAIN program Loop
*/
void loop() // run over and over again
{
if(millis()>tempo+1000 && minuti>=0){
secondi--; //decremento i secondi
tempo=millis();
itoa(secondi,test,10);
Serial.println(secondi);
if(secondi==0)
{
secondi=60;
minuti--;
}
}
else if(minuti<0 && millis()>=tempo+1000 && seclamp>0)
{
tempo=millis();
Serial.println("kaboom");
x=!x;
seclamp--;
}
}