Pages: [1]   Go Down
Author Topic: contatore di tocchi  (Read 824 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salve a tutti, il mio nome è Matteo

avevo in progetto un piccolo programma ma non riesco a farlo funzionare..  smiley-confuse
vorrei accendere un led dopo aver premuto 10 volte un pulsante; qualcuno mi può aiutare ???

grazie, Matteo
Logged

Online Online
Full Member
***
Karma: 1
Posts: 160
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.:
Code:
if (digitalRead(10)==HIGH){
  contatore++;
}
poi valuti la varibile e se maggiore di 10 accendi il led con una digitalWrite
Code:
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
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12681
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Genova
Offline Offline
Faraday Member
**
Karma: 43
Posts: 3486
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

definire una varianile di tipo int che vai ad incrementare ad ogni pressione del pulsante
Tipo byte
Logged

no comment

Online Online
Full Member
***
Karma: 1
Posts: 160
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

un contatore del genere potrebbe essere utilizzato anche per contare quante volte è stata ripetuta un'istruzione in loop?
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 116
Posts: 6021
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley

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 smiley-wink

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie mille
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 336
Posts: 23144
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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ì:
Code:
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++.
Logged


Pages: [1]   Go Up
Jump to: