Stavo rifacendo la scheda di un cronometro (autoprodotto precedentemente) e comandato da pulsanti quando mi è sorto (accidenti, ... la mancanza delle basi!!!) un dubbio che spero vogliate chiarirmi.
Il circuito è semplice: +5V --> pulsante --> resistore 10 o + Kohm --> GND
--> PIN XX
la domanda è semplice: perché devo inserire il resistore ed il collegamento a GND essendo il circuito normalmente aperto? chiudendolo il flusso dovrebbe andare tutto sul PIN .. ergo la parte resistore + GND non essere utilizzata.
Gli ingressi di Arduino non consumano corrente, si dice "sono ad alta impedenza"
In realtà consumano talmente poco che basta il minimo disturbo per farli 'scattare"
E quindi si mette una resistenza al gnd
Che ha lo scopo di 'drenare' a massa i disturbi, ovvero consumare quel minimo di corrente necessaria a rendere trascurabili i disturbi
Occhio: minimo
Infatti per come hai fatto tu è circa mezzo milliAmpere
Perché in quel modo l'ingresso ha per certo 2 stati stabili : 0 con il pulsante aperto, garantito dalla resistenza verso GND, o 1, pulsante chiuso verso i 5V. Se non fai così l'ingresso risulta 'floating', cioè essendo ad altissima impedenza lo stato di 0 o 1 non è in alcun modo garantito ma è grossomodo casuale. Per i pulsanti si in genere si usa in più comodo PullUp interno (pinMode(n_pin, INPUT_PULLUP)) e si fa chiuder il pulsante verso GND, coì si risparmia la resistenza esterna. Ovviamente nel programma va invertita la logica, cioè si deve leggere digitalRead(n_pin) == LOW per il pulsante attivato.
Per i pulsanti si in genere si usa in più comodo PullUp interno (pinMode(n_pin, INPUT_PULLUP)) e si fa chiuder il pulsante verso GND, coì si risparmia la resistenza esterna.