Video 3 - Arduino pulsante che attiva un LED
Primo input digitale: pushbutton, resistenze di pull-up e pull-down, digitalRead() e controllo LED alla pressione.
2. Di cosa parla questo video
In questo tutorial ti guiderò nella realizzazione di un progetto con Arduino attraverso l'ambiente di lavoro di Tinkercad, attiviamo un LED alla pressione di un pulsante, introducendo il primo sensore digitale di input e le resistenze di pull-down per un segnale stabile.
Evolviamo da output a input: Arduino non solo accende LED, ma legge mondo esterno. Componenti: pushbutton 4 pin, resistenza 10kΩ pull-down, LED rosso + 220Ω, Arduino Uno. Cablaggio pull-down: 5V → pulsante → pin 2 + resistenza 10kΩ → GND, quando premi 5V va su pin 2 (HIGH), quando rilasci 10kΩ tira a GND (LOW). Alternativa pull-up interna: pinMode(2, INPUT_PULLUP) senza resistenza esterna. Codice: const int button = 2; const int led = 13;, pinMode(button, INPUT); pinMode(led, OUTPUT);, int stato = digitalRead(button); if(stato == HIGH) digitalWrite(led, HIGH); else digitalWrite(led, LOW);. Simula pressione, LED si accende solo mentre tieni premuto.
Questo è il video dove la maggior parte si blocca. Nel video al minuto 8 mostro l'errore che fa impazzire: collegate pulsante tra 5V e pin 2 senza resistenza di pull-down. Così quando non premete, pin 2 è flottante, prende disturbi elettromagnetici e LED sfarfalla da solo come se fosse posseduto. La resistenza 10kΩ pull-down serve per tenere pin a 0V stabile quando pulsante aperto. Al minuto 13 mostro pushbutton 4 pin: ha due coppie collegate internamente, se lo mettete ruotato di 90° create un corto 5V-GND. Vi mostro come testare continuità con multimetro Tinkercad. E al minuto 17 mostro INPUT_PULLUP: senza resistenza esterna, pin interno 20kΩ tira a 5V, logica invertita LOW premuto.
3. Obiettivi di apprendimento
- ✅ Caratteristiche di un pulsante con Arduino (NO, 4 pin, rimbalzo)
- ✅ Resistenze di pull-up e di pull-down (10kΩ, INPUT_PULLUP interno)
- ✅ Creazione e simulazione del tuo terzo circuito Arduino con input digitale
Alla fine saprai cablare pushbutton con resistenza pull-down 10kΩ o usare pull-up interna, leggere stato con digitalRead, usare if else per controllare LED, capire pin flottante vs stabile, usare Serial Monitor per vedere HIGH/LOW del pulsante, e creare interazione uomo-macchina base per tutti i prossimi progetti con sensori.
4. Perché il pulsante - Da output a input digitale
Video 1-2 solo LED output. Video 3 introduce input:
| Video 1-2 (Output) | Video 3 (Input + Output) |
|---|---|
| Arduino → LED, solo scrive | Pulsante → Arduino → LED, legge e scrive |
| pinMode OUTPUT, digitalWrite | pinMode INPUT, digitalRead + OUTPUT |
| Nessuna resistenza critica oltre 220Ω LED | Resistenza 10kΩ pull-down/pull-up obbligatoria |
| LED sempre controllato da codice | LED controllato da utente umano con pressione |
| No flottante | Pin flottante senza resistenza → LED sfarfalla |
| Base blink | Base interazione, sensori, controllo |
Se vi chiedono "Perché resistenza pull-down 10kΩ?", rispondete: "Pin INPUT senza resistenza è flottante, impedenza alta, prende rumore e legge HIGH/LOW casuale. Pull-down 10kΩ tra pin e GND tiene pin a 0V stabile quando pulsante aperto, quando chiudo pulsante 5V va su pin, corrente 5V/10k=0.5mA sicura. Alternativa INPUT_PULLUP usa resistenza interna 20kΩ verso 5V, senza esterna, logica invertita: HIGH rilasciato, LOW premuto. 10kΩ compromesso tra stabilità e consumo". Risposta da elettronico.
5. Concetti chiave - Pushbutton, pull-up/pull-down, digitalRead
Cuore del video, minuto 5-15:
6. Lab in Tinkercad - Circuito pulsante + LED
Nel video (minuto 3-19):
- Setup: Nuovo circuito "Video3 Pulsante LED" → Arduino Uno + breadboard + pushbutton + resistenza 10kΩ + LED rosso + resistenza 220Ω
- Cablaggio pull-down: Arduino 5V → cavo rosso → breadboard → pulsante pin 1 (angolo), pulsante pin 2 (stesso lato) → cavo giallo → Arduino pin 2 + resistenza 10kΩ → bus GND → Arduino GND. Arduino pin 13 → 220Ω → anodo LED → catodo → GND. Attenzione orientamento pulsante: usa lato lungo breadboard, non corto
- Codice pull-down: const int button = 2, led = 13, setup pinMode button INPUT, led OUTPUT, loop stato = digitalRead(button), if stato HIGH digitalWrite led HIGH else LOW, Serial.println stato
- Simulazione: Start → LED spento → clic su pulsante (tieni premuto) → LED ON → rilascia → LED OFF → vedi su Serial Monitor HIGH/LOW
- Variante INPUT_PULLUP: pinMode button INPUT_PULLUP, cablaggio pin 2 → pulsante → GND (2 fili), codice if digitalRead LOW → premuto → LED ON
Pushbutton 4 pin: 2 coppie collegate, testa con multimetro Tinkercad. Pull-down 10kΩ: 5V → pulsante → pin 2 + 10kΩ → GND, HIGH premuto. Pull-up interna: pinMode INPUT_PULLUP, pin 2 → pulsante → GND, LOW premuto, senza resistenza esterna. Debounce: delay 50ms dopo lettura o millis(). Cavi: rosso 5V, nero GND, giallo segnale pin 2, verde LED. Nel video al minuto 11 mostro come ruotare pulsante correttamente su breadboard per evitare corto 5V-GND.
7. Errori comuni da evitare
- Pin flottante senza pull-down: pulsante tra 5V e pin 2 senza 10kΩ verso GND → pin flottante quando rilasciato, LED sfarfalla da solo, legge HIGH/LOW casuale. Sempre 10kΩ pull-down o INPUT_PULLUP.
- Pulsante ruotato 90° corto: pulsante su breadboard ruotato → pin 1-3 collegati interni creano corto 5V-GND quando premi, Tinkercad errore corrente, Arduino reale surriscalda. Ruota pulsante di 90°, verifica coppie con multimetro.
- Logica invertita con INPUT_PULLUP: usi INPUT_PULLUP ma codice if HIGH per premuto → LED ON quando rilasci, OFF quando premi, logica opposta. Con PULLUP premi = LOW.
- pinMode INPUT dimenticato: digitalRead senza pinMode → pin resta OUTPUT di default, lettura errata. Sempre pinMode button INPUT o INPUT_PULLUP in setup.
- Resistenza pull-down valore errato: 220Ω invece di 10kΩ come pull-down → quando premi 5V/220Ω=22mA spreco, resistenza scalda. Usa 10kΩ (marrone nero arancio), 0.5mA sicuro.
- LED senza resistenza: LED su pin 13 senza 220Ω → brucia come Video 1. Sempre 220Ω in serie con LED anche con pulsante.
- Debounce ignorato: premi una volta ma codice legge 5 pressioni per rimbalzo meccanico → LED sfarfalla, conteggio errato. Soluzione delay 50ms o gestione millis nel Video 4 interruttore.
Pulsante senza resistenza pull-down, pin flottante. Sintomo: LED si accende da solo senza toccare pulsante, Serial Monitor mostra HIGH LOW casuali, sfarfalla quando avvicini mano, in Tinkercad LED lampeggia random. Soluzione: aggiungi resistenza 10kΩ tra pin 2 e GND (pull-down) oppure usa pinMode 2 INPUT_PULLUP e cabla pin 2 → pulsante → GND senza resistenza esterna ma inverti logica: LOW premuto. Nel video al minuto 8 mostro oscilloscopio con pin flottante rumoroso vs stabile con pull-down.
8. Approfondimento: INPUT vs INPUT_PULLUP
Differenze fondamentali per ogni progetto con pulsante:
| Pull-down esterna 10kΩ | INPUT_PULLUP interna |
|---|---|
| 3 fili: 5V → pulsante → pin + 10kΩ → GND | 2 fili: pin → pulsante → GND |
| Resistenza esterna 10kΩ necessaria | Resistenza interna 20kΩ, nessuna esterna |
| Logica positiva: premuto = HIGH | Logica invertita: premuto = LOW |
| Intuitiva per principianti | Compatta, professionale, meno fili |
| Corrente 0.5mA quando premuto | Corrente 0.25mA quando premuto |
| Usata in questo video base | Usata in Video 4 interruttore toggle |
Prossimo video: Pulsante come interruttore - toggle con memoria.
📚 Compito per casa
Crea su Tinkercad circuito Video 3: Arduino Uno, breadboard, pushbutton, resistenza 10kΩ pull-down, LED rosso + 220Ω. Cablaggio pull-down: 5V → pulsante → pin 2 + 10kΩ → GND, pin 13 → 220Ω → LED → GND. Codice con const int button=2 led=13, pinMode button INPUT led OUTPUT, loop digitalRead button, if HIGH LED ON else OFF, Serial.println stato. Simula pressione pulsante LED ON solo mentre premi. Prova variante INPUT_PULLUP: pinMode INPUT_PULLUP, cablaggio pin 2 → pulsante → GND, if LOW premuto LED ON. Screenshot LED ON con pulsante premuto + Serial Monitor HIGH + codice. Mandamelo prima del Video 4 pulsante come interruttore.