inizio dicendo che non sono molto pratico di form e sfortunatamente nemmeno di Arduino ahime
Spero di aver rispettato il regolamento.
Ho provato a cercare un pò ovunque quello che mi serve ma non ci sono riuscito.
Come da oggetto, vorrei accendere un led cliccando in sequenza una serie di tasti.
Per esempio, tre tasti che cliccati nella sequenza 1, 2, 3 mi diano la possibilità di accendere il led, se cliccati in altre sequenze tipo 1, 3, 2 tengano il led spento.
Credo che serva inserire una variabile nel codice, ma non ci sto riuscendo.
Qualcuno potrebbe aiutarmi con un esempio per favore?
Crea una variabile int (intera) che inizi a 0
con dei doppi if (usando && and logico)
Se hai premuto 1 e la variabile è a 0 la metti a 1 altrimenti a 0
if( digitalRead(pin1)==HIGH && var==0) var=1; else var=0;
Se hai premuto 2 e la variabile è a 1 la metti a 2 altrimenti a 0
Se hai premuto 3 e la variabile è a 2 la metti a 3 altrimenti a 0
dopo questi semplicemente ti chiedi se var==3 allora accendi il led, altrimenti lo spegni
Quando posti del codice mettilo all'interno dell'apposito tag code (identificato dal bottone </>)
L'errore è qui:
else var==0;
{digitalWrite(LED,LOW);}
ma anche se risolvi in mettendo l'if il codice comunque credo sia errato, se l'intento è accendere il led, attendere 5 secondi e poi spegnerlo allora tutta la parte dell'else va eliminata il codice inserito dopo il delay Es.
stefanodaimler:
Scusami fabpolli, la prossima volta inserirò il codice all'interno del tag.
NO, così non va ... in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra). Grazie.
nid69ita mi sa che ti sei dimenticato di azzerare la variabile var a 0, così il led non si spegne dopo 5 secondi ma solo dopo che è stato premuto qualche tasto
Ti ho aggiunto anche un pò di stampa messaggi verso il pc (serial monitor) per debuggare/verificare cosa succede.
[/quote]
Stavolta il codice non ha problemi ma non funziona ancora e dal monitor seriale sembra non cambi la variabile; resta sempre a zero e quindi il led resta sempre spento..
Ho provato ad uno ad uno tutti i tasti e ricontrollato tutti i collegamenti, ma non trovo alcun problema di collegamenti o hardware
pensandoci anche i varie if in quel modo sono sbagliati, infatti non premendo nessun pulsante l'else imposta la variabile sempre a zero, penso che si dovrebbe cambiare in questo modo:
if (digitalRead(pinB1)
{
if (var==0) {var=1} else {var=0}
}
ecc. ecc.
mentre dopo il delay
scrivere:
var=0;
-zef-:
nid69ita mi sa che ti sei dimenticato di azzerare la variabile var a 0, così il led non si spegne dopo 5 secondi ma solo dopo che è stato premuto qualche tasto
Si, hai ragione, zef !
Ed anche gli if non van tanto bene. Ho modificato il mio post precedente.
stefanodaimler:
Ho provato ad uno ad uno tutti i tasti e ricontrollato tutti i collegamenti, ma non trovo alcun problema di collegamenti o hardware
Vedi sopra, non ho provato il codice, ho modificato il mio post precedente.
P.S. per i led.... hai messo vero delle adeguate resistenze per OGNI led ?!?
nid69ita:
Vedi sopra, non ho provato il codice, ho modificato il mio post precedente.
P.S. per i led.... hai messo vero delle adeguate resistenze per OGNI led ?!?
Grazie mille.
Adesso il codice funziona, ma solo a volte.
Nel senso che da monitor seriale riesco a vedere che il tasto viene sempre letto e di conseguenza cambia la variabile, ma spesso la stringa successiva riporta la variabile a 0..
Ho provato anche con diverse resistenze ai tasti, ma il risultato non cambia.
Non ho idea di quale possa essere il problema. A volte va e a volte no.
Ho notato anche che schiacciando i 3 pulsanti contemporaneamente il led si accende e questo non dovrebbe accadere in quanto sarebbe come forzare la password.
Il led è soltanto uno, ma non credo ci siano problemi al led in questo caso.
stefanodaimler:
Grazie mille.
Adesso il codice funziona, ma solo a volte.
Nel senso che da monitor seriale riesco a vedere che il tasto viene sempre letto e di conseguenza cambia la variabile, ma spesso la stringa successiva riporta la variabile a 0..
Ho provato anche con diverse resistenze ai tasti, ma il risultato non cambia.
Non ho idea di quale possa essere il problema. A volte va e a volte no.
Ho notato anche che schiacciando i 3 pulsanti contemporaneamente il led si accende e questo non dovrebbe accadere in quanto sarebbe come forzare la password.
Come comando da eseguire ogni volta che si preme un pulasnte, alla fine ho aggiunto un
delay(50);
e non so se tecnicamente è corretto, ma ora sembra vada bene ogni volta.
Non sono comunque riuscito a risolvere il problema dei pulsanti premuti in contemporanea.
Inoltre ho notato che premendo il primo pulsante 2 volte di seguito, o dopo il pulsante 2, a volte la varibile torna a 0 e a volte resta ad 1 come vorrei che accadesse.
Cioè quando la variabile è a 1 o a 2, premendo il primo pulsante, non sempre la variabile va a 1, ma a volte va a 0