Introduzione
Benvenuto al tuo primo progetto con PWM (Pulse-Width Modulation)! In questo tutorial, costruiremo un semplice circuito che sfuma gradualmente un LED da spento a luminoso e viceversa. Questo è un classico progetto per principianti con Arduino che ti insegna come usare analogWrite() per controllare la luminosità, la velocità di un motore o qualsiasi dispositivo che risponda a una tensione media variabile.
Utilizzeremo Velxio, un simulatore di circuiti in-browser con supporto analogico accurato SPICE. Nessun hardware necessario – solo il tuo browser! Puoi seguire, modificare il codice e vedere i risultati istantaneamente.

Spiegazione del Circuito
Diamo un’occhiata ai componenti e al cablaggio per questo progetto.
Componenti
| Componente | Quantità | Note |
|---|---|---|
| Arduino Uno | 1 | Il cervello dell’operazione |
| LED (qualsiasi colore) | 1 | Utilizzeremo un LED blu |
| Resistore (220 Ω) | 1 | Resistore limitatore di corrente (non mostrato nello schema ma raccomandato) |
| Cavi jumper | 2 | Per le connessioni |
Cablaggio
- Anodo del LED (gamba lunga) → Collega al pin 9 di Arduino (un pin PWM).
- Catodo del LED (gamba corta) → Collega a GND su Arduino.
Importante: Usa sempre un resistore limitatore di corrente (tipicamente da 220 Ω a 1 kΩ) in serie con il LED per evitare di bruciarlo. Nel simulatore Velxio, il modello del LED include una resistenza interna, ma nella vita reale devi aggiungerne uno.
Ecco il cablaggio in dettaglio:
- Cavo 1 (blu): Dal pin 9 di Arduino all’anodo del LED (A).
- Cavo 2 (nero): Dal catodo del LED (C) a GND di Arduino.
Questo è tutto! Solo due connessioni. Il pin 9 di Arduino può emettere un segnale PWM, che useremo per variare la luminosità del LED.

Spiegazione del Codice
Apri l’editor di codice in Velxio. Vedrai il seguente sketch Arduino:
// Fade LED with PWM
// Smoothly fade LED brightness
const int LED_PIN = 9; // PWM pin
int brightness = 0;
int fadeAmount = 5;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
analogWrite(LED_PIN, brightness);
brightness += fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
delay(30);
}
Come Funziona
LED_PIN = 9: Usiamo il pin 9 perché supporta PWM (contrassegnato con un~su Arduino Uno).brightness: Questa variabile contiene il valore PWM corrente (da 0 a 255). 0 = spento, 255 = luminosità massima.fadeAmount: Quanto cambia la luminosità a ogni ciclo. Positivo = diventa più luminoso, negativo = diventa più scuro.setup(): Imposta il pin del LED come uscita.loop():analogWrite(LED_PIN, brightness)emette il segnale PWM.brightness += fadeAmountaumenta o diminuisce la luminosità.- L’istruzione
ifcontrolla se la luminosità ha raggiunto 0 o 255. Se sì, inverte la direzione negandofadeAmount. delay(30)rallenta la sfumatura in modo che tu possa vederla.
Concetti Chiave
- PWM (Pulse-Width Modulation): Una tecnica in cui il pin digitale si accende e spegne rapidamente. La tensione media (e quindi la luminosità del LED) dipende dal ciclo di lavoro (tempo acceso vs. tempo spento).
analogWrite()imposta il ciclo di lavoro. analogWrite(): Accetta valori da 0 (sempre spento) a 255 (sempre acceso).pinMode(): Configura il pin come uscita (o ingresso).delay(): Mette in pausa il programma per millisecondi. Senza di esso, la sfumatura sarebbe troppo veloce per essere vista.
Errori Comuni e Consigli per il Debug
-
Il LED non si accende?
- Controlla che il LED sia collegato correttamente (anodo al pin 9, catodo a GND).
- Assicurati che il codice sia caricato (clicca sul pulsante Run nella barra degli strumenti).
- Verifica che
LED_PINcorrisponda al pin effettivamente utilizzato.
-
Il LED rimane alla massima luminosità?
- Assicurati di usare un pin che supporta PWM (3, 5, 6, 9, 10, 11 su Uno). Il pin 13 non è PWM.
- Controlla che venga chiamato
analogWrite(), nondigitalWrite().
-
La sfumatura è troppo veloce o troppo lenta?
- Regola il valore di
delay(30). Più grande = sfumatura più lenta. - Cambia
fadeAmountper controllare la dimensione del passo (es. 1 per molto fluido, 10 per più veloce).
- Regola il valore di
-
Il simulatore non risponde?
- Usa il pulsante Reset nella barra degli strumenti del canvas.
- Ricarica la pagina se necessario.

Estensioni Suggerite
Una volta padroneggiata la sfumatura di base, prova queste sfide:
- LED multipli: Aggiungi altri due LED sui pin 10 e 11. Fai in modo che si sfumino in sequenza o a velocità diverse.
- Controllo con pulsante: Aggiungi un pulsante per avviare/fermare la sfumatura.
- Controllo velocità con potenziometro: Usa un potenziometro per regolare la velocità della sfumatura (sostituisci
delay(30)con una variabile letta da un ingresso analogico). - LED RGB: Usa un LED RGB e sfuma attraverso diversi colori controllando tre pin PWM.
- Monitor seriale: Stampa il valore di luminosità sul Monitor Seriale per il debug.
Provalo Tu Stesso!
Pronto a vederlo in azione? Apri l’esempio live in Velxio:
Puoi modificare il codice, cambiare la velocità della sfumatura o persino aggiungere nuovi componenti. Il simulatore funziona interamente nel tuo browser – nessun download, nessuna configurazione.
Buona sfumatura!