Video 7 - Arduino fotoresistenza e tre LED
Sensore di luce ambientale: LDR come partitore, lettura ADC 0-1023, mappatura a soglie e barra luminosa a 3 LED che si spegne con la luce.
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 una fotoresistenza con 3 LED: se è buio rimarranno accesi 3 LED, via via che la luminosità aumenta si spegne il primo poi il secondo e infine il terzo LED, creando una barra luminosa crepuscolare che reagisce alla luce ambientale.
Ultimo progetto del corso Arduino base: fotoresistenza LDR 10kΩ al buio / 1kΩ alla luce + resistenza fissa 10kΩ formano partitore su A0. Cablaggio: 5V → LDR → nodo A0 + 10kΩ → GND (o LDR verso GND e 10k verso 5V, invertito). Al buio LDR 1MΩ → tensione bassa su A0 → val ADC basso ~0-200 → 3 LED ON. Alla luce LDR 1kΩ → tensione alta → val alto ~800-1023 → 0 LED ON. Codice con if-else a soglie: int val = analogRead(A0); if(val < 300) { 3 LED ON } else if(val < 600) { 2 LED ON } else if(val < 900) { 1 LED ON } else { 0 LED ON }. Mappatura ADC: int luce = map(val, 0, 1023, 0, 100); // percentuale. Serial per calibrare soglie buio/luce in Tinkercad.
Questo è il video finale che chiude il cerchio del corso Arduino. Nel video al minuto 8 mostro l'errore che fa fallire il 90%: collegate LDR diretta tra 5V e A0 senza resistenza fissa 10kΩ. Così A0 è flottante quando LDR non conduce, e quando conduce create corto 5V-GND. Serve sempre partitore LDR + 10kΩ. Al minuto 13 mostro perché LDR va calibrata: in Tinkercad luce ambientale si regola con slider, val al buio 50 e alla luce 900, ma su Arduino reale val buio 0 e luce 1023 dipendono da LDR e 10kΩ, dovete stampare su Serial e trovare soglie 300-600-900 adatte al vostro ambiente. E al minuto 18 mostro barra LED inversa: se volete che più luce = più LED accesi, invertite logica if, ma per crepuscolare buio=3 LED ha senso come luce notturna.
3. Obiettivi di apprendimento
- ✅ Funzionamento della fotoresistenza LDR come resistenza variabile con la luce
- ✅ Familiarizzare con la mappatura dell'ADC converter di Arduino 0-1023 a soglie
- ✅ Creazione e simulazione del tuo settimo circuito Arduino con barra a 3 LED
Alla fine saprai cablare LDR con resistenza fissa 10kΩ come partitore su A0, leggere luce ambientale 0-1023 con analogRead, calibrare soglie buio/luce con Serial Monitor, usare if-else if-else per creare barra luminosa a 3 LED che si spegne con la luce, mappare ADC a percentuale 0-100% con map(), e creare sensore crepuscolare per luci automatiche notturne.
4. Perché fotoresistenza - Da manopola a sensore ambientale
Video 6 potenziometro manuale. Video 7 sensore automatico:
| Potenziometro (Video 6) | Fotoresistenza LDR (questo video) |
|---|---|
| Manuale: ruoti manopola → cambi luce | Automatico: luce ambientale → cambia da sola |
| Resistenza fissa 10kΩ variabile meccanica | Resistenza variabile con luce: buio 1MΩ, luce 1kΩ |
| 1 LED dimmerato PWM 0-255 | 3 LED a soglie ON/OFF digitale per barra |
| map per PWM continuo | if-else soglie 300-600-900 per livelli discreti |
| Controllo manuale luminosità | Sensore crepuscolare: buio 3 LED, luce 0 LED |
| Dimmer | Luce notturna automatica, barra luminosa |
Se vi chiedono "Come funziona fotoresistenza con Arduino?", rispondete: "LDR Light Dependent Resistor: resistenza alta al buio 1MΩ, bassa alla luce 1kΩ. Con resistenza fissa 10kΩ forma partitore su A0: 5V→LDR→A0→10k→GND. Al buio LDR alta → V su A0 bassa ~0V → ADC 0-200, alla luce LDR bassa → V alta ~4V → ADC 800-1023. Leggo analogRead(A0) 0-1023, calibro soglie con Serial: <300 buio 3 LED ON, 300-600 penombra 2 LED, 600-900 luce 1 LED, >900 giorno 0 LED. Così barra crepuscolare automatica, luce notturna. Se inverto LDR e 10kΩ, logica invertita". Risposta da sensoristica base.
5. Concetti chiave - LDR, partitore, ADC, soglie, barra LED
Cuore del video, minuto 6-16:
6. Lab in Tinkercad - Circuito crepuscolare
Nel video (minuto 4-24):
- Setup: Nuovo circuito "Video7 Fotoresistenza 3 LED" → Arduino Uno + breadboard + fotoresistenza LDR + resistenza 10kΩ + 3 LED (rosso giallo verde) + 3 resistenze 220Ω
- Cablaggio: Partitore: Arduino 5V → cavo rosso → breadboard → LDR pin1, LDR pin2 → cavo giallo → Arduino A0 + resistenza 10kΩ → bus GND → Arduino GND. LED: Arduino pin 8 → 220Ω → anodo LED1 rosso → catodo → GND, pin 9 → 220Ω → LED2 giallo → GND, pin 10 → 220Ω → LED3 verde → GND, GND comune bus
- Codice barra crepuscolare: const ldr=A0 led1=8 led2=9 led3=10, setup pinMode led OUTPUT Serial, loop val=analogRead ldr 0-1023, perc=map val 0-1023 0-100, Serial val e perc, if val<300 digitalWrite 3 HIGH else if val<600 led1 led2 HIGH led3 LOW else if val<900 led1 HIGH altri LOW else tutti LOW, delay 100
- Simulazione: Start → Tinkercad slider fotoresistenza (clic su LDR → imposta luce) buio → val ~50 → 3 LED ON, aumenta luce → val ~400 → 2 LED ON, val ~700 → 1 LED ON, val ~950 → 0 LED ON → luce notturna automatica. Regola soglie guardando Serial
- Varianti: Logica inversa luce=3 LED ON per barra diretta, aggiungi buzzer che suona al buio, soglia con potenziometro per calibrazione manuale
LDR + 10kΩ partitore: 5V→LDR→A0→10k→GND, buio LDR 1MΩ→ADC 0-200, luce 1kΩ→ADC 800-1023. Calibra con Serial: slider Tinkercad su LDR per buio/luce annota val, imposta soglie 300-600-900 adattate. Barra crepuscolare: if val<300 3 HIGH else if <600 2 HIGH else if <900 1 HIGH else 0 LOW. 3 LED pin 8,9,10 + 220Ω ciascuno + GND comune. Map perc=map(val,0,1023,0,100) per %. Nel video al minuto 22 mostro Tinkercad slider luce e barra che si spegne progressiva.
7. Errori comuni da evitare
- LDR senza resistenza fissa: LDR tra 5V e A0 senza 10kΩ verso GND → A0 flottante quando LDR alta, corto 5V-GND quando LDR bassa 1kΩ, val casuale. Sempre partitore LDR + 10kΩ.
- Resistenza fissa valore errato: 220Ω invece di 10kΩ come partitore → al buio LDR 1MΩ + 220Ω V_A0 ~0.001V sempre basso, alla luce 1kΩ+220Ω V 0.9V sempre basso, range ridotto. Usa 10kΩ per range 0-4.5V.
- LDR invertita logica non capita: cablaggio 5V→10k→A0→LDR→GND invece di 5V→LDR→A0→10k→GND → logica inversa buio=HIGH luce=LOW, se usi if <300 per buio con logica inversa ottieni giorno=3 LED. Scegli cablaggio e adatta if.
- Soglie fisse senza calibrazione: usi 300-600-900 di Tinkercad su Arduino reale con LDR diversa → soglie errate, 3 LED sempre ON o sempre OFF. Calibra con Serial println val in buio e luce reale.
- Pin LED non OUTPUT: pinMode dimenticato per led2 e led3 → solo led1 funziona. Sempre pinMode per tutti e 3 i LED in setup.
- LED senza resistenze dedicate: 3 LED con una sola 220Ω condivisa → come Video 2 errore luminosità diversa e bruciatura. Ogni LED sua 220Ω dedicata.
- If-else senza else finale: if <300 3 ON, if <600 2 ON, if <900 1 ON senza else if → quando val=200 entrano tutti e 3 gli if, 3 sovrascritture, ultimo vince. Usa else if a cascata.
LDR senza partitore + soglie non calibrate + if senza else if. Sintomo: 3 LED sempre accesi o sempre spenti, ruoti slider luce in Tinkercad nessun cambiamento, val ADC sempre 0 o 1023 o casuale, barra non progressiva, tutti LED ON anche di giorno. Soluzione: partitore 5V→LDR→A0→10kΩ→GND obbligatorio, Serial println val, annota buio ~50 penombra ~400 luce ~700 giorno ~950, imposta soglie 300-600-900 adattate, usa if <300 else if <600 else if <900 else. Verifica con multimetro Tinkercad su A0 0-5V variando luce. Nel video al minuto 8 mostro LDR senza 10kΩ con val flottante.
8. Approfondimento: mappatura ADC e calibrazione
Ultimo concetto del corso: calibrazione sensore reale:
| Fase | Cosa fare | Valori esempio |
|---|---|---|
| 1. Cablaggio | 5V→LDR→A0→10k→GND, 3 LED 8,9,10 + 220Ω | Partitore obbligatorio |
| 2. Lettura grezza | analogRead(A0) → Serial println val | Buio 20, penombra 350, luce 750, giorno 980 |
| 3. Calibrazione | Slider luce Tinkercad, annota min/max reali | Min 20, max 980 nel tuo ambiente |
| 4. Soglie | Dividi range in 4 livelli: 3,2,1,0 LED | <300, <600, <900, >=900 |
| 5. Mappatura | map(val,0,1023,0,100) → percentuale luce | 0% buio, 100% giorno |
| 6. Barra | if-else if-else a cascata, GND comune | Crepuscolare: buio 3 ON, luce 0 ON |
Fine corso Arduino base - 7 circuiti! Da blink a sensore luce.
📚 Compito per casa - Ultimo del corso Arduino
Crea su Tinkercad circuito finale Video 7: Arduino Uno, breadboard, LDR + resistenza 10kΩ partitore 5V→LDR→A0→10k→GND, 3 LED rosso pin 8 + 220Ω, giallo pin 9 + 220Ω, verde pin 10 + 220Ω, GND comune. Codice con const ldr=A0 led1=8 led2=9 led3=10, setup pinMode OUTPUT, loop val=analogRead(A0) perc=map(val,0,1023,0,100) Serial val e perc, if val<300 3 HIGH else if <600 2 HIGH 1 LOW else if <900 1 HIGH 2 LOW else tutti LOW, delay 200. Simula: slider LDR buio → 3 LED ON val ~50, aumenta luce → 2 ON val ~400, luce → 1 ON val ~700, giorno → 0 ON val ~950. Calibra soglie guardando Serial. Prova variante barra diretta luce=3 LED invertendo if >900 3 ON. Screenshot buio 3 LED ON + giorno 0 OFF + Serial val + codice. Mandamelo - hai finito corso Arduino 7 circuiti!