Introduzione
Hai mai voluto costruire un semaforo ma non avevi i componenti a portata di mano? Con Velxio puoi simulare un intero semaforo basato su Arduino direttamente nel tuo browser. Questo progetto utilizza tre LED (rosso, giallo, verde) collegati a un Arduino Uno per riprodurre la classica sequenza del semaforo: rosso → giallo → verde → giallo → rosso. È un progetto perfetto per principianti per imparare le uscite digitali, la temporizzazione e la logica sequenziale.
Spiegazione del Circuito
Diamo un’occhiata al circuito. Lo schema seguente mostra il cablaggio completo:

Componenti
- Arduino Uno – il cervello dell’operazione.
- LED Rosso – collegato al pin digitale 13.
- LED Giallo – collegato al pin digitale 12.
- LED Verde – collegato al pin digitale 11.
- Resistenze – ogni LED necessita di una resistenza limitatrice di corrente (tipicamente 220Ω) in serie con il suo anodo. In Velxio, i LED integrati hanno già resistenze interne, quindi non è necessario aggiungerle manualmente.
Dettagli del Cablaggio
Ogni LED ha due terminali: anodo (gambo più lungo, contrassegnato come pin “A”) e catodo (gambo più corto, contrassegnato come pin “C”). Il cablaggio è semplice:
- LED Rosso: Anodo al pin 13 di Arduino tramite un filo rosso (
#ff0000). Catodo al GND di Arduino tramite un filo nero. - LED Giallo: Anodo al pin 12 di Arduino tramite un filo giallo (
#ffaa00). Catodo al GND. - LED Verde: Anodo al pin 11 di Arduino tramite un filo verde (
#00ff00). Catodo al GND.
Tutti e tre i LED condividono la stessa connessione GND su Arduino. Questa è una configurazione a massa comune.
Spiegazione del Codice
Ora esaminiamo il codice che fa cambiare le luci. Apri l’editor di codice in Velxio:

// Traffic Light Simulator
// Red -> Yellow -> Green -> Yellow -> Red
const int RED_PIN = 13;
const int YELLOW_PIN = 12;
const int GREEN_PIN = 11;
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(YELLOW_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
}
void loop() {
// Red light
digitalWrite(RED_PIN, HIGH);
delay(3000);
digitalWrite(RED_PIN, LOW);
// Yellow light
digitalWrite(YELLOW_PIN, HIGH);
delay(1000);
digitalWrite(YELLOW_PIN, LOW);
// Green light
digitalWrite(GREEN_PIN, HIGH);
delay(3000);
digitalWrite(GREEN_PIN, LOW);
// Yellow light again
digitalWrite(YELLOW_PIN, HIGH);
delay(1000);
digitalWrite(YELLOW_PIN, LOW);
}
Come Funziona
- Definizioni dei Pin: Definiamo costanti per i tre pin:
RED_PIN = 13,YELLOW_PIN = 12,GREEN_PIN = 11. Questi corrispondono al cablaggio. - Setup: In
setup(), impostiamo tutti e tre i pin comeOUTPUTusandopinMode(). Questo dice ad Arduino di inviare tensione attraverso questi pin. - Loop: La funzione
loop()viene eseguita all’infinito. Segue questa sequenza:- Accendi il LED rosso (
HIGH), attendi 3 secondi, spegnilo (LOW). - Accendi il LED giallo, attendi 1 secondo, spegnilo.
- Accendi il LED verde, attendi 3 secondi, spegnilo.
- Accendi di nuovo il LED giallo, attendi 1 secondo, spegnilo.
- Poi il ciclo si ripete partendo dalla luce rossa.
- Accendi il LED rosso (
Questo crea il familiare schema del semaforo.
Concetti Chiave per gli Studenti
- Uscite Digitali:
digitalWrite(pin, HIGH)imposta un pin a 5V (acceso),LOWlo imposta a 0V (spento). - Temporizzazione con
delay():delay(millisecondi)mette in pausa il programma. Attenzione: mentredelay()è in esecuzione, Arduino non può fare nient’altro. - Logica Sequenziale: L’ordine delle operazioni è importante. Il codice viene eseguito riga per riga, quindi le luci cambiano in una sequenza prevedibile.
- Massa Comune: Tutti i LED condividono la stessa connessione a massa. Questo è tipico nei circuiti digitali.
Errori Comuni e Suggerimenti per il Debug
- Numeri di Pin Errati: Ricontrolla che i numeri dei pin nel codice corrispondano al cablaggio. Se il LED rosso è sul pin 13 ma hai scritto
12, non si accenderà. - Orientamento del LED: I LED sono polarizzati. L’anodo (gambo lungo) deve essere collegato al pin di Arduino, e il catodo (gambo corto) al GND. In Velxio, il componente LED è orientato correttamente per impostazione predefinita.
- Resistenze Mancanti: Nella vita reale, usa sempre una resistenza limitatrice di corrente (220Ω–1kΩ) in serie con ogni LED per evitare danni. I LED integrati di Velxio includono resistenze, ma se usi componenti personalizzati, aggiungile.
- Blocco con
delay(): Se vuoi aggiungere pulsanti o sensori in seguito,delay()bloccherà il programma. Considera l’uso dimillis()per una temporizzazione non bloccante.
Estensioni Suggerite
Una volta che il semaforo di base funziona, prova questi miglioramenti:
- Aggiungi un Pulsante Pedonale: Usa un pulsante per richiedere il segnale di attraversamento. Quando premuto, il semaforo diventa rosso, poi si accende un LED bianco (attraversamento pedonale).
- Usa
millis()Invece didelay(): Riscrivi il codice usandomillis()per la temporizzazione. Questo permette ad Arduino di controllare la pressione dei pulsanti mentre aspetta. - Aggiungi un Cicalino: Collega un cicalino piezoelettrico a un pin e fallo suonare quando la luce verde sta per diventare gialla.
- Simula un Attraversamento Pedonale: Aggiungi altri due LED (rosso e verde) per un attraversamento pedonale e coordinali con i semafori.
Prova Tu Stesso
Pronto a costruire il tuo semaforo? Apri l’esempio in Velxio e inizia a sperimentare:
Apri l’Esempio del Semaforo su Velxio
Puoi modificare il codice, cambiare i tempi o aggiungere altri LED. Il simulatore funziona interamente nel tuo browser – nessun download, nessun hardware. Usa la barra degli strumenti per compilare ed eseguire il tuo codice:


Se hai bisogno di aggiungere nuovi componenti, apri il selettore dei componenti:

E se vuoi usare librerie, il Gestore Librerie è a un clic di distanza:

Buona simulazione!