Lezione 98-5: Dissolvenza della luce quando viene premuto un pulsante utilizzando Arduino
In questa lezione costruirai una luce che si spegne gradualmente su comando: premi un pulsante e il LED parte a piena luminosità, poi si attenua dolcemente fino a spegnersi. Questo è uno dei modelli per principianti più utili in Arduino perché combina un ingresso digitale (il pulsante) con un'uscita analogica PWM (la luminosità del LED), e ti insegna a controllare la velocità e la fluidità di un cambiamento invece di limitarti ad accendere e spegnere qualcosa.
La dissolvenza su richiesta appare ovunque nei prodotti reali. Ecco alcuni modi pratici in cui puoi usare ciò che impari qui:
- Luci indicatrici con spegnimento graduale — invece di una lampada che si spegne di colpo, si attenua delicatamente quando premi un pulsante, il che appare molto più curato su elettrodomestici e custodie stampate in 3D.
- Modalità sonno / standby — premi un pulsante e un LED di stato luminoso si dissolve nel nero per non disturbarti di notte, mentre il circuito rimane alimentato.
- Illuminazione scenica o per modellini con "dissolvenza al nero" — un singolo pulsante attiva un'attenuazione graduale di una striscia o di un pannello LED invece di un taglio brusco.
- Feedback per risparmio batteria — una breve pressione del pulsante ti dà un lampo di conferma luminoso che si dissolve, così il LED resta a piena luminosità solo per breve tempo.
- Arte interattiva e oggetti di scena — un effetto "respiro in uscita" attivato dal tocco, ideale per cosplay, diorami o esposizioni museali.
L'idea centrale è semplice: il pulsante dice ad Arduino "inizia la dissolvenza ora", e Arduino porta la luminosità del LED da 255 (massimo) a 0 (spento) in piccoli passi. Poiché i passi sono piccoli e avvengono rapidamente, il tuo occhio vede una dissolvenza fluida invece di un salto.
Se non hai mai fatto una dissolvenza con un LED, il controllo della luminosità di base è trattato nella Lezione 98-4: Dissolvenza di una luce LED con Arduino: Controllo della luminosità. Questa lezione si basa direttamente su quella base aggiungendo un pulsante come trigger.
Hardware e componenti
Questa è una realizzazione a bassissimo costo — tutto qui è materiale standard da kit per principianti:
- Scheda Arduino (Uno, Nano, Mega o qualsiasi scheda compatibile)
- Un LED (5 mm o 3 mm, qualsiasi colore)
- Un pulsante (momentaneo, il tipo tattile a 4 pin funziona bene)
- Una resistenza per il LED — da 200 Ω a 1000 Ω (la classica 220 Ω o 330 Ω è perfetta)
- Breadboard e fili jumper DuPont
- Cavo USB per la programmazione (e una batteria o un adattatore da 5 V se vuoi farlo funzionare senza fili)
Una breve nota sulla resistenza del LED: un LED necessita di circa 2 V ai suoi capi e circa 10 mA di corrente. Con un'alimentazione da 5 V, la resistenza deve dissipare i restanti 3 V, quindi la legge di Ohm dà circa 300 Ω. Qualsiasi valore da 300 Ω fino a 1000 Ω funzionerà — valori più alti rendono semplicemente il LED più fioco. Usare una resistenza non è opzionale; senza di essa il LED assorbirà troppa corrente e si brucerà.
Guida al cablaggio
Il cablaggio è volutamente minimale. L'anodo del LED (il piedino più lungo) si collega attraverso la resistenza al pin digitale 3, e il suo catodo (il piedino più corto, con il lato piatto sul corpo) va a massa. Il pulsante si collega tra il pin digitale 2 e massa — non serve una resistenza di pull-up esterna perché il codice abilita il pull-up interno di Arduino.
Fai attenzione alla polarità del LED: il lato piatto del corpo in plastica e il piedino più corto indicano il catodo (negativo). Se lo inserisci al contrario, il LED semplicemente non si accenderà — non si verificano danni, basta girarlo.
Per il pulsante, se stai usando un interruttore tattile a 4 pin, ricorda che i pin sono accoppiati internamente: due dei quattro pin sono sempre collegati tra loro. Usa un multimetro in modalità continuità per trovare una coppia che emette un bip quando viene premuta, poi usa un pin da ciascun lato. Un lato va al pin 2, l'altro a massa.
Spiegazione del codice
Lo sketch è breve, e quasi tutto ciò che potresti voler cambiare si trova in una manciata di righe in cima. Ecco le parti configurabili dall'utente:
const int pushButtonPin = 2;//il pin a cui è collegato l'interruttore a pulsante
const int LEDPin = 3;//il pin a cui è collegato il LED
const int fadeAmount = 10; // di quanti punti attenuare il LED
const int fadeSpeed = 5;//tempo di dissolvenza in millisecondi. più il valore è piccolo, più la dissolvenza è veloce
pushButtonPin e LEDPin indicano semplicemente all'Arduino a quali pin hai collegato le cose. Se sposti il pulsante sul pin 4 o il LED sul pin 9 (un pin compatibile con PWM), cambia semplicemente questi due numeri per adattarli al tuo cablaggio. Nota che il pin del LED deve supportare il PWM — su un Uno questo significa i pin 3, 5, 6, 9, 10 o 11 — perché la dissolvenza richiede analogWrite().
fadeAmount controlla quanto è grande ogni passo di luminosità. La luminosità va da 0 a 255, quindi un fadeAmount di 10 significa che il LED si attenua in circa 25 passi. Un numero più grande rende la dissolvenza più grossolana e veloce; un numero più piccolo la rende più fluida e lenta.
fadeSpeed è il ritardo in millisecondi tra ogni passo. Questa è la singola manopola più importante per come l'effetto si percepisce. Un valore di 5 ms dà una dissolvenza rapida e scattante; un valore di 30 ms o più dà un'attenuazione lenta e lussuosa. Combinati con fadeAmount, questi due valori ti permettono di regolare la dissolvenza esattamente con il carattere che desideri.
C'è anche una variabile interna che vale la pena conoscere:
int brightness = 255; // quanto è luminoso il LED
int pushButtonStatus = 0; // valore push dal pin 2
brightness parte da 255, il che significa che il LED inizia a piena luminosità ogni volta che premi il pulsante. Se vuoi che la dissolvenza parta da un punto più debole — diciamo, metà luminosità — cambia questo valore in 128.
La logica stessa funziona così: il loop legge il pulsante. Se è premuto (LOW, a causa del pull-up interno), un ciclo while viene eseguito finché brightness è sopra zero. All'interno di quel ciclo l'Arduino scrive la luminosità corrente sul LED, sottrae fadeAmount, attende fadeSpeed millisecondi e ripete. Quando il pulsante non è premuto, il LED viene semplicemente impostato a 0 e rimane spento.
Un dettaglio importante: il pull-up interno fa sì che il pin legga HIGH quando il pulsante non è premuto e LOW quando lo è. Ecco perché il codice controlla LOW per rilevare una pressione. Se mai passassi a una resistenza di pull-down esterna, dovresti cambiare quel confronto in HIGH.
Progetto dal vivo e dimostrazione
Una volta caricato, il comportamento è immediato e soddisfacente. Premi il pulsante e il LED salta a piena luminosità, poi si attenua visibilmente fino a spegnersi in un periodo che controlli tu. Rilascia il pulsante e il LED si spegne; premi di nuovo e la dissolvenza riparte da piena luminosità.
Nel video la dissolvenza è dimostrata con diverse impostazioni così puoi sentire e vedere la differenza. Con fadeAmount = 20 la dissolvenza è veloce e a scatti — raggiunge lo zero in una manciata di passi visibili. Scendendo a fadeAmount = 10 si addolcisce notevolmente, e passando a fadeAmount = 3 la dissolvenza diventa visibilmente più lunga e appare quasi continua. Il valore fadeSpeed ha un effetto altrettanto drammatico: impostarlo a 1 ms rende la dissolvenza quasi istantanea, mentre valori più grandi la allungano.
Prova questo esperimento: imposta fadeAmount = 5 e fadeSpeed = 30. Otterrai un'attenuazione lenta e delicata che sembra una luce che si addormenta. Poi imposta fadeAmount = 50 e fadeSpeed = 1 per un taglio duro e veloce. Nessuno dei due è "sbagliato" — è del tutto questione dell'atmosfera che vuoi.
Il comportamento a interruttore dello stesso pulsante è trattato separatamente in Lezione 98-3: Come accendere/spegnere un LED a interruttore usando un pulsante con Arduino, e la versione più semplice premi-per-accendere è in Lezione 98-2: Come accendere e spegnere un LED usando un pulsante con Arduino.
Poiché la dissolvenza è attivata da un contatto momentaneo, questo stesso circuito è adatto naturalmente a pilotare un relè o un MOSFET invece di un LED — potresti attenuare una lampada a 12 V, l'avvio graduale di un motore o il riscaldamento di un elemento riscaldante. Il pulsante è solo il grilletto; ciò che attenui dipende da te.
Progetti correlati da questo video
- Lezione 98-1: Come accendere e spegnere un LED con Arduino
- Lezione 98-2: Come accendere e spegnere un LED usando un pulsante con Arduino
- Lezione 98-3: Come accendere/spegnere un LED a interruttore usando un pulsante con Arduino
- Lezione 98-4: Attenuare una luce LED usando Arduino: controllo della luminosità
- Lezione 98-6: Gioco LED altalena con Arduino
- Lezione 98-7: Luce camminante usando Arduino e 5 LED
- Lezione 98-8: Luce camminante con pulsante e LED con Arduino
- Lezione 98-9: Misuratore di livello di tensione LED usando Arduino o luce camminante con potenziometro
- Lezione 98-10: Semaforo con Arduino
Capitoli
- [00:00] Panoramica dei 10 progetti LED
- [01:00] Introduzione al corso passo passo su Arduino
- [02:29] Nozioni di base sui LED: simboli, polarità e corrente
- [03:49] Calcolo della resistenza del LED con la legge di Ohm
- [05:53] Progetto 1: Accendere e spegnere un LED
- [12:43] Progetto 2: LED con pulsante
- [17:13] Progetto 3: Attivare/disattivare il LED con pulsante
- [20:12] Progetto 4: Dissolvenza di un LED
- [23:20] Progetto 5: Dissolvenza di un LED con pulsante
- [27:32] Progetto 6: LED altalena
- [30:47] Progetto 7: Luce camminante
- [36:41] Progetto 8: Luce camminante con pulsante
- [42:25] Progetto 9: Misuratore del livello di tensione a LED
- [49:25] Progetto 10: Semaforo con Arduino
This code has not been parsed yet. Please return to the admin panel to parse it.
Cose di cui potresti avere bisogno
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Risorse e riferimenti
-
DocumentazioneDocumentazione per il kit di apprendimento SunFounder 3 in 1 IoT/Smart Car.docs.sunfounder.com
-
Esterno
-
Esterno
-
Esterno
File📁
Librerie Arduino (zip)
-
Codice sorgente del kit di apprendimento Smart Car 3-in-1 di SunFounder
3in1-kit-main-v2.zip12.80 MB
Manuale dell'utente
-
Manuale di assemblaggio SunFounder 3-in-1 Arduino Smart CarQuesto documento mostra l'assemblaggio passo dopo passo della SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB