Ciao a tutti è da un po di tempo che non riesco a trovare una soluzione per il mio progetto di arduino,spero voi possiate aiutarmi.
Per mandare avanti il mio progetto dovrei riuscire a far accendere un led premendo un pulsante ew il ed si accende e si spegne con un intervallo di 1 sec all'infinito mentre quando premo un altra volta il pulsante il led si accende e si spegne con un intervallo di 2 sec all'infinito.Aavevo già fatto questa domanda sul forum e mi avevano consigliato la funzione millis ma anche leggendo articli e guide non sono riuscito a capire.Spero possiate aiutarmi,Grazie.
Ciao Francesco, si possiamo aiutarti ma esattamente qual'è il problema?
ad alto livello lo sketch deve fare...
tasto premuto 1a volta? se si:
- memorizzo in una variabile (es. tempo1) il valore di millis
- imposto flag (es. primoTasto) a true
tasto premuto 2a volta? se si: - imposto flag (es. secondoTasto) a true
- imposto flag (es. primoTasto) a false
se ((millis - tempo1) / 1000 ) MODULO 2 = 0 AND primoTasto // sono passati un numero di secondi PARI
allora spengo led
altrimenti accendo led
se ((millis - tempo1) / 1000 ) MODULO 4 >= 2 AND secondoTasto // sono passati più di due secondi OGNI 4
allora spengo led
altrimenti accendo led
quest'esempio è molto grezzo ma dovrebbe essere semplice da capire
Spero di averti aiutato, Stefano
Per primo usa dai titoli che riasumono la Tua domanda.
millis() é una funziona che conta i millisecondi trascorsi dalla acensione del Arduino.
Per usarlo in sostituzione di delay() memorizzi il tempo a inizio intervallo e controlli a ogni ciclo se il tempo da te voluto é trascorso.
unsigned long previousMillis = 0;
unsigned long interval = 1000;
setup()
{
previousMillis = millis();
}
void loop()
{
if (millis() - previousMillis > interval) {
//tempo di attesa trascorso
}
}
Ciao Uwe
Grazie