Ciao, scusa il ritardo di due anni😅, mi chiedevo se usando questa funzione millis potessi controllare un pulsante in questo modo: in pratica sto facendo un programma usando lo switch e devo far accendere 3 led in sequenza binaria dopo ogni pressione di un pulsante. Succede però che se il pulsante lo premo una volta i led di accendono a mano a mano che premo il pulsante.. se premo a lungo i led si accendono e spengono all'infinito.. con questa funzione millis, si potrebbe fare che se il pulsante è premuto per più di 500ms la sequenza si interrompe? Ossia i led non si accendono più e rimangono nello stato in cui erano? Se vuoi ti mando il programma che ho fatto io usando millis, ma non funziona la parte millis. Grazie e scusa per il papiro
Nell'if dopo l'istruzione digitalWrite va aggiunta l'istruzione timer=millis(); per resettare il contatore e ricominciare a contare per il prossimo intervallo.
Ciao, scusa il ritardo di due anni😅, mi chiedevo se usando questa funzione millis potessi controllare un pulsante in questo modo: in pratica sto facendo un programma usando lo switch e devo far accendere 3 led in sequenza binaria dopo ogni pressione di un pulsante. Succede però che se il pulsante lo premo una volta i led di accendono a mano a mano che premo il pulsante.. se premo a lungo i led si accendono e spengono all'infinito.. con questa funzione millis, si potrebbe fare che se il pulsante è premuto per più di 500ms la sequenza si interrompe? Ossia i led non si accendono più e rimangono nello stato in cui erano? Se vuoi ti mando il programma che ho fatto io usando millis, ma non funziona la parte millis. Grazie e scusa per il papiro
ho provato a rifarlo, ma il tempo non scorre a secondi, ma si incrementa fino ad arrivare a 1000
Scusa per il ritardo della risposta. Potresti allegare il link al codice su TinkerCad o allegare qui il codice che hai scritto? Grazie.
int timer;
time_led=500;
int pin_led=5;
void setup()
{
pinMode(pin_led,OUTPUT);
digitalWrite(pin_led, HIGH);
timer=millis();
}
void loop()
{
if (millis()-timer>time_led) digitalWrite(pin_led, !digitalRead(pin_led));
}
Nell'if dopo l'istruzione digitalWrite va aggiunta l'istruzione timer=millis(); per resettare il contatore e ricominciare a contare per il prossimo intervallo.
Ma in esecuzione su simulator time il tempo scorre in millisecondi e non in secondi