aiuto

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