Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Sljedeći koraci su eksperimenti koji ilustriraju kako LED diode rade. Oni ilustriraju kako zatamniti LED jednakom brzinom i kako je ugasiti.
Trebat će vam:
- Arduino (koristio sam duo)
- Breadboard
- 5 mm crvena LED dioda
- Otpornik od 330 Ω (Nije kritično 330-560 Ω će raditi.)
- Čvrsta priključna žica od 22 mjerača
Dijelovi potrebni za ove eksperimente uključeni su u sve Arduino komplete za pokretanje.
Korak 1: Objašnjena pulsna modulacija
LED diode uvijek rade na istom naponu bez obzira na svjetlinu. Svjetlina je određena oscilatorom kvadratnog vala, a vrijeme koje je visoki napon određuje svjetlinu. To se naziva Pulse Width Modulation (PWM). To kontrolira Arduino analogWrite (pin, n) funkcija gdje n ima vrijednost od 0 do 255. analogWrite () daje PWM, nije pravi analog. Ako je n = 2, LED dioda će biti dvostruko jača od n = 1. Svjetlina se uvijek udvostručuje kada se n udvostruči. Tako će n = 255 biti dvostruko svjetlije od n = 128.
Vrijednost n često se izražava kao postotak koji se naziva radni ciklus. Slike prikazuju tragove osciloskopa za 25, 50 i 75% ciklusa rada.
Korak 2: Neujednačeno zatamnjivanje
Izgradite krug kao na dijagramu. Ovo je isto kao i krug koji treperi LED. Koristi pin 9 jer morate koristiti pin s omogućenim PWM -om.
Kopirajte/zalijepite skicu ispod u Arduino IDE i pokrenite je.
Primijetit ćete da je LED svjetlija što je svjetlija sporije slabi. Kako se približava najsvjetlijem, postajat će sve tamniji vrlo brzo.
void setup ()
{pinMode (9, OUTPUT); } void loop () {int pin = 9; for (int i = 255; i> -1; i--) {analogWrite (pin, i); kašnjenje (10); } za (int i = 0; i <256; i ++) {analogWrite (pin, i); kašnjenje (10); }}
}
Sljedeći korak pokazuje kako zatamniti LED diodu konstantnom brzinom, au jednom za iskaz.
Korak 3: Gore i dolje u jednom za ()
Da bi LED prigušivao konstantnom brzinom, kašnjenje () se mora povećati eksponencijalnom brzinom jer će pola radnog ciklusa uvijek proizvoditi polovinu svjetline. Prvo sam pomislio da pokušam koristiti funkciju map (), ali ona je linearna.
Linija:
int d = (16-i/16)^2;
izračunava inverzni kvadrat svjetline kako bi odredio dužinu kašnjenja.
Kopirajte/zalijepite skicu ispod u Arduino IDE i vidjet ćete da će LED svjetlo nestajati konstantnom brzinom.
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); kašnjenje (d); if (i == 255) x = -1; // prebacivanje smjera na vrhuncu}}