3.9. Interruttori e resistori di pull¶
L’uscita GPIO pilota l’hardware esterno. L’ingresso GPIO è l’opposto: la camera legge la tensione su un pin e la riporta come 0 o 1. Il dispositivo di ingresso più semplice è un interruttore – e renderlo leggibile in modo affidabile richiede un componente elettronico in aggiunta all’interruttore stesso.
3.9.1. Interruttori e ingressi flottanti¶
Un interruttore è un contatto meccanico: due pezzi di metallo che si toccano quando l’interruttore è chiuso e si separano quando è aperto. Elettricamente, questo è l’intero dispositivo. Non c’è alcuna sorgente di tensione al suo interno; un interruttore da solo fornisce solo «connesso» o «disconnesso».
Cablare un interruttore direttamente tra un pin GPIO e la massa significa che il pin è:
A 0 V quando l’interruttore è chiuso (ora cablato alla massa).
Flottante quando l’interruttore è aperto (cablato a nulla).
Un pin flottante non ha una tensione definita. L’ingresso legge qualunque cosa si trovi nelle sue vicinanze – diafonia da segnali vicini, rumore dall’alimentazione, persino l’elettricità statica di un dito vicino al filo. value() restituisce miscele imprevedibili di 0 e 1 molte volte al secondo.
3.9.2. Resistori di pull-up e pull-down¶
La soluzione è un resistore di pull: un resistore di valore elevato (tipicamente da 10 kΩ a 100 kΩ) che lega l’ingresso a una linea nota quando l’interruttore è aperto.
Configurazioni di pull-up (a sinistra) e pull-down (a destra) per un ingresso a interruttore.¶
Pull-up. Il resistore lega l’ingresso alla linea di alimentazione. Quando l’interruttore è aperto, solo una piccola corrente scorre attraverso il resistore e il pin legge alto. Quando l’interruttore è chiuso, cortocircuita il pin a massa; il pin legge basso. Il resistore limita la corrente che altrimenti scorrerebbe dall’alimentazione alla massa attraverso l’interruttore chiuso.
Pull-down. L’immagine speculare: il resistore lega l’ingresso alla massa e l’interruttore si collega all’alimentazione. Aperto legge basso, chiuso legge alto.
Il pull-up è la convenzione più comune – pulsanti «attivi bassi». L’MCU stesso fornisce pull-up e pull-down integrati che possono essere abilitati con Pin.PULL_UP o Pin.PULL_DOWN, eliminando del tutto il resistore esterno.