Video 6 - Arduino potenziometro che regola la luminosità di un LED
Primo input analogico: potenziometro come partitore di tensione, analogRead(), analogWrite() PWM e map() per dimmerazione.
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, facciamo funzionare un potenziometro che regola la luminosità di un LED, introducendo il primo sensore analogico e il concetto di partitore di tensione e PWM.
Passiamo da digitale (HIGH/LOW) ad analogico (0-1023). Componenti: potenziometro 10kΩ lineare, LED rosso + 220Ω, Arduino Uno. Cablaggio potenziometro: pin 1 → 5V, pin 2 centrale → A0, pin 3 → GND → partitore di tensione: ruotando varia tensione su A0 da 0V a 5V. Codice: int val = analogRead(A0); // 0-1023, int pwm = map(val, 0, 1023, 0, 255); // converte 0-1023 a 0-255, analogWrite(9, pwm); // PWM su pin 9 ~. Pin PWM Arduino Uno: 3,5,6,9,10,11 con ~. LED dimmerabile da spento a massima luminosità ruotando potenziometro. Serial per vedere val e pwm.
Questo è il video che apre il mondo analogico. Nel video al minuto 7 mostro l'errore che fa impazzire: collegate potenziometro centrale a pin digitale 2 invece di A0, così analogRead non funziona e LED sempre spento. A0-A5 sono analogici, non digitali. Al minuto 12 mostro perché pin 9 e non pin 8: analogWrite funziona solo su pin PWM con ~ (3,5,6,9,10,11), su pin 8 non funziona PWM, LED solo ON/OFF non dimmerabile. E al minuto 18 mostro map(): senza map, se fate analogWrite(A0) direttamente con 0-1023, superate 255 e LED sempre al massimo. Map converte 0-1023 → 0-255. E al minuto 21 mostro partitore: se collegate 5V e GND invertiti, potenziometro funziona al contrario, rotazione oraria spegne invece di accendere.
3. Obiettivi di apprendimento
- ✅ Funzionamento del potenziometro come resistenza variabile
- ✅ Concetto di partitore di tensione 0-5V su A0
- ✅ Creazione e simulazione del tuo sesto circuito Arduino con PWM
Alla fine saprai cablare potenziometro 10kΩ come partitore 5V-A0-GND, leggere valore analogico 0-1023 con analogRead, convertire con map a 0-255 PWM, scrivere su pin PWM con analogWrite per dimmerare LED, usare Serial Monitor per vedere val analogico e pwm, e capire differenza digitale 0/1 vs analogico continuo 0-1023.
4. Perché analogico - Da digitale a continuo
Video 1-5 solo digitale HIGH/LOW. Video 6 analogico continuo:
| Digitale (Video 1-5) | Analogico (questo video) |
|---|---|
| HIGH/LOW, 0V/5V, 2 valori | 0-1023, 0V-5V, 1024 valori continui |
| digitalRead, digitalWrite | analogRead(A0), analogWrite(pin PWM, 0-255) |
| Pulsante ON/OFF | Potenziometro dimmer 0-100% |
| LED ON/OFF | LED dimmerabile da spento a massimo |
| Pin digitali 2-13 | Pin analogici A0-A5 per lettura, pin PWM ~ per scrittura |
| No map necessaria | map(val,0,1023,0,255) per conversione ADC→PWM |
Se vi chiedono "Come funziona potenziometro con Arduino?", rispondete: "Potenziometro 10kΩ lineare 3 pin: estremi a 5V e GND, centrale a A0. È partitore di tensione: Vout = Vin * (R2/(R1+R2)), ruotando varia R1/R2 e Vout 0-5V. Arduino ADC 10 bit legge 0-1023 su A0 con analogRead, 0=0V 1023=5V. Per dimmerare LED serve PWM su pin con ~ 3,5,6,9,10,11: analogWrite(pin, 0-255) 0 spento 255 max, uso map(val,0,1023,0,255) per convertire ADC a PWM. Così rotazione potenziometro regola luminosità 0-100%". Risposta da elettronico.
5. Concetti chiave - Partitore, analogRead, PWM, map
Cuore del video, minuto 6-17:
6. Lab in Tinkercad - Circuito dimmer
Nel video (minuto 3-22):
- Setup: Nuovo circuito "Video6 Potenziometro LED" → Arduino Uno + breadboard + potenziometro 10kΩ + LED rosso + resistenza 220Ω
- Cablaggio: Potenziometro: pin sinistro → cavo rosso → Arduino 5V, pin centrale → cavo giallo → Arduino A0, pin destro → cavo nero → Arduino GND. LED: Arduino pin 9 (PWM ~) → cavo verde → breadboard → resistenza 220Ω → anodo LED → catodo → GND bus → Arduino GND. Attenzione: pin 9 con ~ per PWM, non pin 8
- Codice dimmer: const pot=A0 led=9, setup pinMode led OUTPUT Serial 9600, loop val=analogRead pot 0-1023, pwm=map val 0-1023 0-255, analogWrite led pwm, Serial print val e pwm, delay 50
- Simulazione: Start → ruota potenziometro in Tinkercad (clic e trascina manopola) → LED da spento a massimo progressivo → Serial Monitor mostra val 0→1023 e pwm 0→255 → ruota indietro LED si spegne
- Varianti: map a 0-100 per percentuale, 2 LED con 2 potenziometri, LED RGB con 3 PWM, buzzer con frequenza da potenziometro
Potenziometro 10kΩ: 5V pin1, A0 pin centrale, GND pin3, partitore 0-5V. ADC 10 bit 0-1023 su A0 con analogRead. PWM solo su pin con ~ 3,5,6,9,10,11, analogWrite 0-255. Map: map(val,0,1023,0,255) converte ADC→PWM, o val/4. LED dimmerabile: ruota pot → val 0-1023 → pwm 0-255 → luminosità 0-100%. Serial per debug. Nel video al minuto 20 mostro oscilloscopio con PWM duty 25% 50% 75% e LED luminosità corrispondente.
7. Errori comuni da evitare
- Potenziometro su pin digitale: centrale a pin 2 invece di A0 → analogRead(2) legge digitale 2 non analogico, val sempre 0/1023 casuale. Sempre A0-A5 per analogRead.
- LED su pin non PWM: LED su pin 8 con analogWrite → pin 8 non ha ~, analogWrite fa solo HIGH/LOW non PWM, LED solo ON/OFF non dimmerabile. Usa pin 9,10,11,3,5,6 con ~.
- Map dimenticata: analogWrite(led, valPot) con valPot 0-1023 → oltre 255 sempre HIGH, LED sempre al massimo, no dimmer. Sempre map 0-1023→0-255 o val/4.
- Potenziometro senza 5V/GND: colleghi solo centrale ad A0 senza 5V e GND su estremi → pin flottante, val casuale, LED sfarfalla. Sempre 5V e GND su estremi potenziometro.
- 5V e GND invertiti: 5V su pin destro e GND su sinistro → potenziometro funziona al contrario, orario spegne. Non grave ma confonde, standard sinistro 5V destro GND (o viceversa coerente).
- Resistenza LED dimenticata: LED su pin 9 senza 220Ω → come Video 1 brucia. Sempre 220Ω in serie anche con PWM.
- AnalogRead su pin PWM: analogRead(9) invece di analogRead(A0) → legge pin 9 digitale non A0, val errato. analogRead solo su A0-A5, analogWrite solo su pin ~.
Potenziometro senza alimentazione + LED su pin non PWM + map dimenticata. Sintomo: ruoti potenziometro LED resta spento o sempre acceso al massimo, Serial val 0 o casuale, analogWrite non dimmera, potenziometro non risponde. Soluzione: potenziometro 3 fili 5V centrale A0 GND, LED su pin 9 con ~ + 220Ω, codice val=analogRead(A0) 0-1023, pwm=map(val,0,1023,0,255), analogWrite(9,pwm). Verifica con multimetro Tinkercad su centrale 0-5V variando manopola. Nel video al minuto 7 mostro potenziometro flottante senza 5V/GND con val casuale.
8. Approfondimento: ADC e PWM
Due concetti fondamentali per sensori analogici:
| ADC analogRead(A0) | PWM analogWrite(9,0-255) |
|---|---|
| Ingresso: legge tensione 0-5V → 0-1023 | Uscita: simula tensione 0-5V con duty 0-100% |
| 10 bit, 1024 livelli, 4.88mV risoluzione | 8 bit, 256 livelli, duty 0-255 |
| Pin A0-A5 solo input | Pin 3,5,6,9,10,11 con ~ solo output PWM |
| Pot, fotoresistenza, sensori analogici | LED dimmer, motori DC velocità, servo (con libreria) |
| analogRead(A0) → 0-1023 | analogWrite(9, 0-255) → 0-5V medio |
| Lettura lenta ~100µs | Frequenza ~490Hz, occhio media luminosità |
Prossimo video: Fotoresistenza e tre LED - sensore luce reale.
📚 Compito per casa
Crea su Tinkercad circuito Video 6 dimmer: Arduino Uno, breadboard, potenziometro 10kΩ, LED rosso + 220Ω. Cablaggio: pot pin1 → 5V, pin centrale → A0, pin3 → GND, LED pin 9 (PWM ~) → 220Ω → anodo → catodo → GND bus. Codice con const pot=A0 led=9, setup pinMode OUTPUT, loop val=analogRead(A0) 0-1023, pwm=map(val,0,1023,0,255), analogWrite(led,pwm), Serial val e pwm, delay 50. Simula: ruota potenziometro LED da spento a max progressivo, Serial 0-1023 → 0-255. Prova varianti: map a percentuale 0-100, LED su pin 10, 2 LED con 2 pot, soglia if val>512 ON else OFF. Screenshot LED media luminosità + Serial Monitor val/pwm + codice. Mandamelo prima del Video 7 fotoresistenza.