Curiosità 3

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.

Anticipatamente grazie per eventuali risposte,

Saluti

Enrico

La risposta è semplice, ma richiede una premessa

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

Magari basta anche meno

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.

Ciao, Ale.

Grazie, dubbio risolto.

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.

Bene, così risparmio spazio!!

Saluti

Enrico

Bella risposta precisa ed esauriente, Ale!
+1 :slight_smile: