Cerca codice

Lezione 98-7: Luce da passeggio utilizzando Arduino e 5 LED

Lezione 98-7: Luce da passeggio utilizzando Arduino e 5 LED

Una luce camminante (chiamata anche luce "a inseguimento" o "Knight Rider") è uno dei classici progetti Arduino per principianti — e per una buona ragione. Ti insegna come controllare più uscite in sequenza, come temporizzare gli eventi e come ragionare sulle resistenze limitatrici di corrente, il tutto producendo qualcosa di visivamente soddisfacente. In questo progetto collegherai cinque LED a un Arduino e li programmerai in modo che ciascuno si accenda a turno, creando l'illusione di una singola luce che "cammina" lungo la fila.

5 leds on breadboard with resistor shown connected to Arduino UNO
5 leds on breadboard with resistor shown connected to Arduino UNO

Una volta compreso lo schema, puoi riutilizzarlo in un numero sorprendente di realizzazioni concrete:

  • Illuminazione decorativa: un bordo a inseguimento per uno scaffale, una cornice o un modello.
  • Indicatori di direzione: un effetto freccia sequenziale per un veicolo di scena o una e-bike.
  • Display di avanzamento o stato: una fila di LED che avanza man mano che un processo si completa.
  • Oggetti di scena per giochi e tabelloni: un "bersaglio mobile" o un indicatore di livello.
  • Strumento didattico: la dimostrazione più chiara possibile di uscite digitali e temporizzazione.

Lo stesso cablaggio a cinque LED viene riutilizzato in diversi altri progetti di questo corso, quindi l'hardware che costruisci qui diventa una piattaforma riutilizzabile.

Come funziona la luce camminante

Il principio è esattamente lo stesso dell'accensione di un singolo LED — viene semplicemente ripetuto cinque volte (nel video a 30:47). Ogni LED è collegato al proprio pin di Arduino attraverso la propria resistenza limitatrice di corrente, e tutte le resistenze condividono una barra di massa comune. Lo sketch poi porta un pin HIGH, attende, lo porta LOW, attende e passa al pin successivo. Poiché è sempre acceso un solo LED alla volta, l'occhio percepisce la sequenza come movimento.

I due valori di temporizzazione sono ciò che dà carattere all'effetto. Il tempo di accensione controlla quanto a lungo ogni LED rimane acceso, e il tempo di spegnimento controlla l'intervallo prima che si accenda il LED successivo. Un tempo di accensione breve con un tempo di spegnimento lungo produce un singolo punto che viaggia rapidamente; un tempo di accensione lungo con un tempo di spegnimento breve produce una scansione più fluida e continua (nel video a 35:00).

Hardware e componenti

  • 1 × scheda Arduino (Uno, Nano o simile)
  • 5 × LED (di qualsiasi colore; mescolare i colori rende l'effetto più facile da leggere)
  • 5 × resistenze — da 300 Ω a 1 kΩ funzionano bene
  • 1 × breadboard
  • Cavi jumper
  • Cavo USB o pacco batteria per l'alimentazione

Se in seguito vuoi aggiungere una variante con pulsante, ti serviranno anche un pulsante momentaneo e due cavi jumper aggiuntivi.

Scegliere il valore della resistenza

Un LED ha una tensione diretta di circa 2 V e richiede circa 10 mA per la massima luminosità (nel video a 03:49). Con un'alimentazione a 5 V, la resistenza deve dissipare i restanti 3 V. Applicando la legge di Ohm, R = V / I = 3 V / 0,01 A = 300 Ω. In pratica va bene qualsiasi valore da 300 Ω fino a circa 1 kΩ — maggiore è la resistenza, più debole è il LED, ma più sicuro ed efficiente è il circuito (nel video a 05:33).

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

Guida al cablaggio

wiring of 5 LED on Arduino
wiring of 5 LED on Arduino

Inserisci i cinque LED nella breadboard con i loro anodi (il piedino più lungo) rivolti nella stessa direzione. Collega ciascun catodo (il piedino più corto, con il lato piatto) alla propria resistenza, e unisci l'estremità opposta di tutte e cinque le resistenze a una barra di massa comune. Poi collega un jumper da ciascun anodo a un pin di Arduino.

In questa realizzazione i LED sono assegnati ai pin 3, 4, 5, 6 e 7 (nel video a 31:29). I numeri dei pin sono definiti all'inizio dello sketch, quindi se preferisci una disposizione diversa devi cambiare solo quelle cinque righe.

Spiegazione del codice

Lo sketch è volutamente semplice, in modo che un principiante possa seguire ogni riga. Solo il blocco in cima deve essere modificato per la propria configurazione.

const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
int offTime = 30;  // the time each LED waits in the OFF state
int onTime = 100;  // the time each LED is ON

Definizioni dei pin. Le cinque righe const int associano ciascun LED a un pin fisico di Arduino. Poiché sono dichiarate const, i valori non possono essere modificati in seguito nel programma — questa è un'abitudine di sicurezza che previene riassegnazioni accidentali. Se colleghi i tuoi LED a pin diversi, cambia i numeri qui e nient'altro.

onTime e offTime. Questi due interi sono le uniche variabili di "comportamento" del progetto, e sono quelle con cui vorrai sperimentare:

  • onTime — per quanto tempo (in millisecondi) ogni LED rimane acceso. Valori più grandi fanno sembrare ogni passo più lento e più deliberato.
  • offTime — la pausa dopo che un LED si spegne prima che il successivo si accenda. Valori più piccoli fanno viaggiare la luce più velocemente.

Prova onTime = 200 e offTime = 200 per un inseguimento uniforme a velocità media, oppure onTime = 30 e offTime = 30 per un effetto molto veloce, quasi sfocato (nel video a 36:06).

La funzione setup() viene eseguita una sola volta e imposta semplicemente tutti e cinque i pin in modalità OUTPUT. La funzione loop() ripete poi lo stesso schema in quattro passaggi per ogni LED: porta il pin HIGH, attende onTime, portalo LOW, attende offTime. Quando il quinto LED termina, il loop riparte dal primo, producendo una camminata infinita.

Progetto dal vivo e dimostrazione

Con i valori predefiniti i LED avanzano lungo la fila a un ritmo rilassato. Caricando lo sketch con onTime e offTime impostati a 200 ms si ottiene una marcia costante e uniforme; abbassandoli entrambi a 30 ms la luce sfreccia lungo la fila quasi troppo velocemente per seguirla (nel video a 36:21).

Due esperimenti utili da provare una volta che funziona:

  • Rendi il tempo di accensione più breve del tempo di spegnimento per creare un punto viaggiante ben distinto.
  • Rendi il tempo di accensione più lungo del tempo di spegnimento per creare un bagliore morbido e sovrapposto.

Lo stesso cablaggio a cinque LED viene riutilizzato nel progetto successivo, dove un pulsante fa avanzare la luce un passo alla volta. Quel montaggio è trattato in Lezione 98-8: Luce camminante con pulsante e LED con Arduino.

Se preferisci pilotare la fila da un ingresso analogico invece che da un pulsante, vedi Lezione 98-9: Misuratore di livello di tensione a LED con Arduino o luce camminante con potenziometro.

Andare oltre

Una volta che la camminata di base funziona, un passo successivo naturale è far rimbalzare la luce avanti e indietro invece di saltare dall'ultimo LED al primo. È un puro esercizio di codice — nessun hardware aggiuntivo — ed è un buon modo per esercitarsi con cicli e array. Puoi anche combinare questo progetto con la versione con pulsante per costruire un display avanzato manualmente.

Progetti correlati da questo video

Capitoli

  • [00:00] Panoramica dei dieci progetti con LED
  • [01:22] Introduzione al corso passo passo su Arduino
  • [02:29] Cos'è un LED e come identificarne i pin
  • [03:49] Calcolo della resistenza limitatrice di corrente
  • [30:47] Introduzione al progetto della luce camminante
  • [31:06] Schema di cablaggio per cinque LED
  • [32:52] Analisi del codice della luce camminante
  • [34:39] Dimostrazione e modifica dei valori di temporizzazione
  • [36:41] Far avanzare la luce con un pulsante (tutorial separato)
  • [42:25] Barra di tensione a LED con potenziometro (tutorial separato)
  • [49:25] Semaforo con Arduino (tutorial separato)

Immagini

wiring of 5 LED on Arduino
wiring of 5 LED on Arduino
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
5 LED su breadboard con resistenza mostrati collegati ad Arduino UNO
5 LED su breadboard con resistenza mostrati collegati ad Arduino UNO
939-Lessson 98-LED-7: Arduino code walking LED light
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