Ciao a tutti, sto familiarizzando con la funzione millis() per cui ho preso il classico esempio Blink per far lampeggiare il led sul pin 13 e ho sostituito a delay() la funzione millis()
il codice che ho scritto è questo:
int led = 13;
int time;
int accensione;
int spegnimento;
void setup() {
time=millis();
accensione=millis();
spegnimento=millis();
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
time=millis();
if (time==accensione+2000){
digitalWrite(led, HIGH);
Serial.println (time);
}
if(time==spegnimento+4000){
digitalWrite(led, LOW);
Serial.println (time);
accensione=millis();
spegnimento=millis();
}
}
Ho aggiunto anche la visualizzazione sulla seriale del tempo trascorso ad ogni passaggio.
Il led lampeggia correttamente ogni due secondi ma ci sono 2 problemi con la seriale:
-
il primo valore, cioè 2000, viene visualizzato 5 volte, il secondo correttamente 1 volta, il terzo 5 volte e cosi via.
-
arrivato a 32 secondi (32000 millisecondi) il valore diventa negativo per poi arrivare a circa zero e ricominciare questo ciclo!
Come mai?
Grazie mille
Mimmo