AIUTO PROGRAMMA LED

Salve a tutti ho iniziato da poco a usare Arduino ed ero intento a fare un programmino con 7 led.
Ho usato un if-else con un bottone; quando il bottone è HIGH si accendono i led in un certo modo.
Quando il bottone è LOW, i led si accendono in un altro modo. Il problema è che se clicco il bottone i led continuano ad accendersi e spegnersi come avevo programmato per il primo if, e non si attiva l’altro caso! Perchè? A me funziona if-else se uso dei programmi più semplici,“statici”, dove ad esempio if pulsante HIGH, il led si accende; else il led si spegne.
Cosa devo fare? Grazie dell’aiuto a tutti!

_7_LED.ino (1.79 KB)

Ciao, essendo il tuo primo post, ti chiederei di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il REGOLAMENTO ... Grazie. :)

Guglielmo

gpb01: Ciao, essendo il tuo primo post, ti chiederei di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il REGOLAMENTO ... Grazie. :)

Guglielmo

Ciao! Ti ringrazio della rapida risposta al post, mi scuso per l'errore, mi sono subito lanciato a fare un post senza guardare i vari regolamenti e il post "introduttivo". Mi sono presentato e ho letto il regolamento, credo di aver postato nella sezione giusta il mio quesito. Mi saresti di grandissimo aiuto se mi dessi qualche aiuto! Grazie :)

Ma è un bottone o un push button, cioè MANTIENE lo stato premuto le lasci il dito o ritorna a posizione non premuto ?

È un bottone che se clicchi senza mantenere dovrebbe cambiare stato del led

Mi sa che se non posti lo sketch, e possibilmente uno schema di come hai collegato il tutto, sara' un po difficile poterti dire se un'eventuale errore sia nel software o nell'hardware ... ;)

La funziona delay() blocca il codice. Arduino non esegue altre funzioni e percui finche non hai finito con la sequenza ( ovvero dopo 4 o 14 secondi) non rilegge lo stato del pulsante.

Devi usare millis()

Ciao Uwe

gabo99: È un bottone che se clicchi senza mantenere dovrebbe cambiare stato del led

Non è la domanda che ti ho fatto. Quello che vuoi fare NON mi interessa, interessa sapere che tipo di button è. Ne esistono di diversi tipi. Magari fai un a foto, così capiamo di che button si tratta. Questo push button NON mantiene la posizione, quindi quando lo rilasci torna a low. Come detto da @uwe, è poi da codice che devi gestire il "premo una volta" stato=A ripremo-> stato B, "ripremo" torno a stato A sempre tenendo conto della delay bloccante.

Questo mantiene lo stato:

Grazie dell’aiuto ora provo come ha detto Uwe! Comunque il pulsante è come quello nella prima foto (quello nero)

uwefed: La funziona delay() blocca il codice. Arduino non esegue altre funzioni e percui finche non hai finito con la sequenza ( ovvero dopo 4 o 14 secondi) non rilegge lo stato del pulsante.

Devi usare millis()

Ciao Uwe

Scusa ma sono veramente nuovissimo su Arduino e non sapevo nemmeno l'esistenza di millis(). Come si usa? Ho guardato sul sito di arduino ma non ci ho capito un granchè..

Per capire come si usa millis() devi studiarti quello che c'è prima QUI, poi QUI ed infine leggi anche QUI e QUI ... vedrai che ti sarà tutto più chiaro.

Guglielmo