salve a tutti, il mio nome è Matteo
avevo in progetto un piccolo programma ma non riesco a farlo funzionare.. :~
vorrei accendere un led dopo aver premuto 10 volte un pulsante; qualcuno mi può aiutare ???
grazie, Matteo
salve a tutti, il mio nome è Matteo
avevo in progetto un piccolo programma ma non riesco a farlo funzionare.. :~
vorrei accendere un led dopo aver premuto 10 volte un pulsante; qualcuno mi può aiutare ???
grazie, Matteo
Ciao Matteo,
se non lo hai già fatto passa nella sezione presentati.
Quello che vuoi fare è abbastanza semplice e lo si può fare in tanti modi.
Uno di questi è definire una varianile di tipo int che vai ad incrementare ad ogni pressione del pulsante questa la puoi rilevare con una digitalRead(numeropin) o con la libreria debounce ad es.:
if (digitalRead(10)==HIGH){
contatore++;
}
poi valuti la varibile e se maggiore di 10 accendi il led con una digitalWrite
if (contatore >= 10){
digitalWrite(13,HIGH);
}
Attento a non collegare direttamente il led al pin di arduino ma metti una resistenza adeguata per non bruciare il pin.
Ciao
l'uso del debounce (hw o sw che sia) è indispensabile, non c'è pulsante che non sia affetto da rimbalzi, quindi sicuramente il LED si accenderebbe prima del tempo.
fabpolli:
definire una varianile di tipo int che vai ad incrementare ad ogni pressione del pulsante
Tipo byte
Ciao,
si la variabile di tipo byte è sicuramente meglio, errore mio...
Per il debounce sono perfettamente d'accordo, infatti ho fatto riferimento alla libreria debounce, non ho messo direttamente l codice in modo che matteo94s potesse andare a cercarlo e verificarne il funzionamento da solo, ad ogni modo avrei dovuto mettere almeno il debounce software con la millis, la prossima volta sarò più preciso
un contatore del genere potrebbe essere utilizzato anche per contare quante volte è stata ripetuta un'istruzione in loop?
ferdard:
un contatore del genere potrebbe essere utilizzato anche per contare quante volte è stata ripetuta un'istruzione in loop?
Ovvio che SI ... definisci una variabile che sarà il tuo contatore, la metti a zero prima di entrare nel loop e, dentro al loop, la incrementi di uno ... tutto qui
Una precauzione ... definisci la variabile di un tipo conforme al massimo numero che dovrai contare ... byte se da 0 a 255, unsigned int se da 0 a 65535, unsigned long se da 0 a 4294967295
Guglielmo
grazie mille
gpb01:
definisci una variabile che sarà il tuo contatore, la metti a zero prima di entrare nel loop e, dentro al loop, la incrementi di uno
Puoi anche definirla direttamente nel loop come statica, così:
void loop() {
static unsigned long contacicli = 0;
.....
contacicli++;
}
"Static" indica al compilatore di mantenere il vecchio valore della variabile, per cui il valore di 0 è assegnato solo all'inizio, poi conterrà sempre il valore incrementato da contacicli++.