Quando un pulsante è collegato in quella configurazione, l'ingresso è quello che viene chiamato mobile , il che significa che non è uno 0 o uno 1. Quando il pulsante viene premuto, viene collegato a terra, quindi è sicuramente uno 0, ma quando non viene premuto, non conosciamo il valore del pin.
Resistenza di pull up
Dobbiamo includere quella che viene definita una resistenza "pull-up" per portare il segnale su una logica 1 quando il pulsante non viene premuto.
Immagine da Sparkfun
Ciò significa che quando il pulsante non viene premuto, Arduino legge una logica 1. Quando il pulsante viene premuto, la corrente scorre a terra attraverso la resistenza e Arduino legge una logica 0.
Resistenza pull up interna
Arduino ha anche resistenze pull up interne, quindi non è necessario aggiungere un componente aggiuntivo al circuito. Ci sono un paio di modi per usarlo.
Prima dovevi farlo in questo modo:
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Ora possiamo farlo semplicemente in una riga:
pinMode(pin, INPUT_PULLUP);
Ciò abilita la resistenza di pull up 20k su quel pin. L'ingresso non sarà più mobile quando il pulsante non viene premuto.
Nota: funziona solo quando l'altra estremità è collegata a terra.