Il pulsante tipico per Arduino (tactile switch) è un interruttore momentaneo: chiude il circuito solo mentre viene premuto. È il componente fondamentale per inviare comandi digitali ai tuoi progetti.
1. Anatomia del Pulsante: Morsetti e Connessioni
Obiettivo: Capire il funzionamento dei pin 1a, 1b, 2a, 2b | Meccanica: Contatto a pressione
Un pulsante tattile ha solitamente 4 piedini, ma agisce come un semplice interruttore a due poli. La chiave per non sbagliare il collegamento è capire come i morsetti sono accoppiati internamente:
| Morsetti | Stato: Riposo | Stato: Premuto |
|---|---|---|
| 1a e 1b | Sempre Collegati |
TUTTI UNITI Il circuito si chiude |
| 2a e 2b | Sempre Collegati | |
| Tra 1 e 2 | Circuito Aperto | Connessione Attiva |
Esempi di collegamenti
|
|
Non collegare mai 1a con 1b o 2a con 2b. In questi casi, i piedini sono già uniti internamente e Arduino leggerà il circuito come "sempre premuto", rendendo il tasto inutile.
Nota: Invertire PIN e GND tra i due morsetti scelti non cambia nulla a livello elettrico; l'importante è che uno vada al pin digitale e l'altro alla massa.
2. Tabella della Logica Digitale (INPUT_PULLUP)
Obiettivo: Interpretare i valori restituiti da digitalRead() | Modalità: Logica Inversa
Quando configuriamo il pin come INPUT_PULLUP,
void setup() {
// Configura il pin digitale 2 come ingresso con pull-up attiva
pinMode(2, INPUT_PULLUP);
}Arduino attiva una resistenza interna che "tira" il segnale verso i 5V. Per questo motivo, i valori letti nel codice potrebbero sembrare invertiti rispetto all'intuizione comune:
| Azione Utente | Stato Circuito | Valore digitalRead() | Stato Logico |
|---|---|---|---|
| Rilascio il tasto | Aperto | 1 |
HIGH |
| Premo il tasto | Chiuso (a massa) | 0 |
LOW |
if (stato == LOW) per capire se l'utente ha premuto il tasto.
Puoi usare sia i numeri (0 e 1) che le costanti (LOW e HIGH), ma le costanti sono preferibili per leggibilità:
void loop() {
int statoPulsante = digitalRead(2);
if (statoPulsante == LOW) {
// Il circuito è CHIUSO verso massa
// Azione: es. accendi il LED
} else {
// Il circuito è APERTO
// Azione: es. spegni il LED
}
}
Il Problema del "Rimbalzo" (Debounce)
I pulsanti sono dispositivi meccanici. Quando premi, le lamelle metalliche "rimbalzano" per qualche millisecondo, facendo credere ad Arduino che tu abbia premuto il tasto molte volte velocemente. Per un semplice LED non è un problema, ma se dovessi incrementare un contatore, dovresti usare un piccolo delay(50) o una logica software per pulire il segnale.