Cerca codice

Lezione 98-8: Luce da camminata con pulsante e LED con Arduino

Lezione 98-8: Luce da camminata con pulsante e LED con Arduino

Questo progetto ti mostra come costruire una "luce camminante" che avanza di un passo ogni volta che premi un pulsante. Invece di una luce che funziona con un proprio timer, ottieni un controllo diretto e tattile: ogni pressione sposta il LED illuminato di una posizione in avanti, e dopo l'ultimo LED ricomincia dal primo. Questo è uno dei mattoni più utili nell'apprendimento di Arduino, perché ti insegna come combinare un ingresso digitale (il pulsante) con una macchina a stati rotante (quale LED è attualmente acceso) — un pattern che riutilizzerai costantemente.

5 leds on breadboard with push button shown connected to Arduino UNO
5 leds on breadboard with push button shown connected to Arduino UNO

Una volta compreso questo pattern, la stessa logica alimenta un'enorme gamma di progetti reali. Ecco alcune idee pratiche che puoi costruire con esso:

  • Un selettore di menu su un dispositivo in cui ogni pressione evidenzia l'opzione successiva.
  • Un indicatore di passo sequenziale per una macchina o un processo (passo 1, passo 2, passo 3...).
  • Un display di punteggio o livello che avanzi manualmente con un pulsante.
  • Un indicatore "canale successivo" o "modalità successiva" per un controller di illuminazione.
  • Un semplice gioco o buzzer per quiz in cui i giocatori a turno accendono la lampada successiva.
  • Un sequenziatore di relè o carichi in cui ogni pressione attiva l'uscita successiva in ordine.

Il vantaggio principale rispetto a una luce camminante automatica è il controllo: non succede nulla finché non premi, quindi la luce avanza solo quando tu decidi. Il video nota anche che la stessa idea di commutazione e sequenziamento può pilotare un relè per accendere una luce AC o controllare un motore, non solo LED (nel video a 19:52).

Hardware e Componenti

La lista dei componenti è breve ed economica:

  • Una scheda Arduino (Uno, Nano, Mega o qualsiasi scheda compatibile).
  • Cinque LED — da 5 mm o 3 mm, di qualsiasi colore tu preferisca.
  • Cinque resistori limitatori di corrente, da 200 Ω a 1000 Ω (il video usa 1 kΩ).
  • Un pulsante (un interruttore tattile momentaneo è l'ideale).
  • Una breadboard e alcuni fili jumper DuPont.

Una breve nota sui LED: il catodo è il piedino più corto e il lato con il bordo piatto, mentre l'anodo è il piedino più lungo (nel video a 03:13). Il valore del resistore non è critico — un resistore più alto rende semplicemente il LED più fioco, quindi qualsiasi valore da circa 300 Ω fino a 1000 Ω funzionerà bene (nel video a 05:33).

Guida al Cablaggio

Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button

Il cablaggio è essenzialmente lo stesso di una luce camminante standard a cinque LED, con l'aggiunta di un pulsante. L'anodo di ciascun LED si collega al proprio pin di Arduino, e ciascun catodo si collega attraverso il proprio resistore a una barra di massa condivisa sulla breadboard. In questa realizzazione i LED sono collegati ai pin 3, 4, 5, 6 e 7 (nel video a 31:37). Il pulsante è posizionato sulla breadboard con un piedino a massa e l'altro piedino al pin 2 — lo stesso pin che il codice usa per il pulsante (nel video a 37:04).

Poiché il codice abilita il resistore di pull-up interno di Arduino, non è necessario alcun resistore esterno sul pulsante. Quando il pulsante non è premuto il pin legge HIGH, e quando lo premi il pin viene portato a massa e legge LOW (nel video a 14:02).

Spiegazione del Codice

Il programma completo è disponibile sotto questo articolo. Qui ci concentriamo sulle parti che vorrai effettivamente modificare.

All'inizio dello sketch, ogni LED e il pulsante sono assegnati a un pin. Qui è dove personalizzi la realizzazione per adattarla al tuo cablaggio:

const int pushButtonPin = 2; // push button pin
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;

int LED_ON = LED1; // which LED is currently lit

La variabile LED_ON è il cuore del progetto. Ricorda quale LED è attualmente illuminato, partendo da LED1. Ogni volta che premi il pulsante, il codice avanza LED_ON al LED successivo nella sequenza e spegne il precedente, così solo un LED è acceso alla volta.

C'è anche una piccola pausa dopo ogni pressione:

delay(200); // debounce / give the user time between presses

Questa pausa di 200 millisecondi impedisce che una singola pressione fisica venga registrata come più pressioni. Se il tuo dito trema o il pulsante sembra troppo sensibile, aumenta questo numero; se vuoi una risposta più rapida, riducilo. Tieni presente che impostarlo troppo basso può far saltare avanti la luce inaspettatamente (nel video a 41:20).

La logica principale risiede in loop(). Legge il pulsante e solo quando il pulsante è premuto (lettura LOW) fa avanzare la luce. La sequenza utilizza una catena di controlli if / else if per passare da LED1 a LED2 a LED3, e così via, tornando a LED1 dopo l'ultimo. Se vuoi cambiare la direzione o l'ordine dei LED, questo è il blocco da modificare — riassegna semplicemente quale pin segue quale.

Progetto dal vivo e dimostrazione

Dopo aver caricato il codice, premendo il pulsante si accende il primo LED; rilasciandolo quel LED rimane acceso. La pressione successiva sposta la luce sul secondo LED, poi sul terzo, quarto e quinto, e la pressione seguente ritorna al primo — una rotazione continua (nel video a 40:22).

Un bell'effetto collaterale del ritardo di 200 millisecondi è che se tieni premuto il pulsante, la luce continua ad avanzare da sola ogni 200 millisecondi, trasformando di fatto il progetto in una luce scorrevole automatica mentre il pulsante è premuto (nel video a 42:07). Rilascia il pulsante e si ferma sul LED corrente. Questo ti offre sia l'avanzamento manuale sia il funzionamento a mani libere con un solo pulsante.

Se preferisci che la luce funzioni automaticamente senza alcun pulsante, quella è una realizzazione separata. La versione automatica è trattata in Lezione 98-7: Luce scorrevole usando Arduino e 5 LED.

Progetti correlati da questo video

Capitoli

  • [00:00] Panoramica dei 10 progetti LED con Arduino
  • [01:22] Introduzione al corso passo passo su Arduino
  • [02:29] Comprendere i LED: simboli, polarità e pin
  • [03:49] Calcolo della resistenza limitatrice di corrente del LED
  • [30:47] Luce scorrevole con 5 LED: cablaggio e principio
  • [32:52] Codice della luce scorrevole: pin, temporizzazione e loop
  • [36:41] Far avanzare la luce con un pulsante
  • [37:44] Luce scorrevole con pulsante: spiegazione del codice
  • [40:22] Dimostrazione e regolazione del ritardo di pressione
  • [57:16] Considerazioni finali e conclusione del corso

Immagini

wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
5 LED su breadboard con pulsante mostrati collegati ad Arduino UNO
5 LED su breadboard con pulsante mostrati collegati ad Arduino UNO
940-Lessson 98-LED-8: Arduino code walking LED light with push button
Lingua: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

File📁

Librerie Arduino (zip)

Manuale dell'utente