Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Naslednji koraki so poskusi, ki ponazarjajo delovanje LED. Prikazujejo, kako enakomerno zatemniti LED -diodo in kako jo zbledeti.
Boste potrebovali:
- Arduino (uporabil sem duo)
- Ogledna plošča
- 5 mm rdeča LED
- 330 Ω upor (ni kritično 330-560 Ω bo delovalo.)
- 22 -palčna trdna priključna žica
Deli, potrebni za te poskuse, so vključeni v vse zagonske komplete Arduino.
Korak 1: Razložena impulzna modulacija
LED diode vedno delujejo pri isti napetosti, ne glede na svetlost. Svetlost določa kvadratni valovni oscilator, čas, ko je napetost visoka, pa svetlost. To se imenuje Pulse Width Modulation (PWM). To nadzira funkcija Arduino analogWrite (pin, n), kjer ima n vrednost od 0 do 255. analogWrite () oddaja PWM, ni pravi analog. Če je n = 2, bo LED dvakrat svetlejša kot n = 1. Svetlost se vedno podvoji, ko se n podvoji. Torej bo n = 255 dvakrat svetlejše od n = 128.
Vrednost n je pogosto izražena kot odstotek, imenovan delovni cikel. Slike prikazujejo sledi osciloskopa za 25, 50 in 75% delovne cikle.
2. korak: Neenakomerno zatemnitev
Zgradite vezje, kot je prikazano na diagramu. To je tako kot vezje za utripanje LED. Uporablja pin 9, ker morate uporabiti pin, ki podpira PWM.
Kopirajte/prilepite skico spodaj v Arduino IDE in jo zaženite.
Opazili boste, da svetlejša kot je LED, počasneje se zatemni. Ko se približa najtemnejšemu, bo zelo hitro zatemnilo.
void setup ()
{pinMode (9, OUTPUT); } void loop () {int pin = 9; for (int i = 255; i> -1; i--) {analogWrite (pin, i); zamuda (10); } for (int i = 0; i <256; i ++) {analogWrite (pin, i); zamuda (10); }}
}
Naslednji korak prikazuje, kako zatemniti LED s konstantno hitrostjo in v enem za izjavo.
3. korak: gor in dol v enem za ()
Da LED dioda zatemni s konstantno hitrostjo, se mora zakasnitev () povečati z eksponentno hitrostjo, ker bo pol delovnega cikla vedno proizvedlo polovico svetlosti. Moja prva misel je bila poskusiti uporabiti funkcijo map (), vendar je linearna.
Linija:
int d = (16-i/16)^2;
izračuna inverzni kvadrat svetlosti, da določi dolžino zamude.
Kopirajte/prilepite skico spodaj v Arduino IDE in videli boste, da bo LED lučka vstopila in izstopala s konstantno hitrostjo.
void setup ()
{pinMode (9, OUTPUT); } void loop () {int x = 1; int pin = 9; za (int i = 0; i> -1; i = i + x) {int d = (16 -i/16)^2; analogWrite (pin, i); zamuda (d); če (i == 255) x = -1; // preklop smeri na vrhuncu}}