INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Die volgende stappe is eksperimente om te illustreer hoe LED's werk. Hulle illustreer hoe u 'n LED teen 'n gelyke snelheid kan verdof en hoe u dit in en uit kan vervaag.
Jy sal nodig hê:
- Arduino (ek het 'n duo gebruik)
- Broodbord
- 5 mm rooi LED
- 330 Ω Weerstand (nie krities nie 330-560 Ω sal werk.)
- 22 meter soliede aansluitdraad
Die onderdele wat benodig word vir hierdie eksperimente, is ingesluit in al die opstartkits van Arduino.
Stap 1: Pulsmodulasie verduidelik
LED's werk altyd op dieselfde spanning, ongeag die helderheid. Die helderheid word bepaal deur 'n vierkantgolf ossillator en die hoeveelheid tyd wat die spanning hoog is, bepaal die helderheid. Dit word Pulse Width Modulation (PWM) genoem. Dit word beheer deur die Arduino analogWrite (pin, n) funksie waar n 'n waarde het van 0 tot 255. Die analogWrite () gee PWM af, nie ware analoog nie. As n = 2 sal die LED twee keer so helder wees as n = 1. Die helderheid verdubbel altyd as n verdubbel. Dus n = 255 sal twee keer so helder wees as n = 128.
Die waarde van n word dikwels uitgedruk as 'n persentasie wat die pligsiklus genoem word. Die foto's toon ossilloskoopspore vir 25, 50 en 75% dienssiklusse.
Stap 2: Ongelyke verduistering
Bou die stroombaan soos in die diagram. Dit is net soos die kring om 'n LED te knip. Dit gebruik pen 9 omdat u 'n PWM -pin moet gebruik.
Kopieer/plak die onderstaande skets in die Arduino IDE en voer dit uit.
U sal sien dat hoe helderder die LED is, hoe stadiger word dit. Namate dit naby die dowwerste kom, word dit baie vinnig dowwer.
leemte opstelling ()
{pinMode (9, OUTPUT); } leemte lus () {int pin = 9; vir (int i = 255; i> -1; i--) {analogWrite (pin, i); vertraging (10); } vir (int i = 0; i <256; i ++) {analogWrite (pin, i); vertraging (10); }}
}
Die volgende stap wys hoe u die LED teen 'n konstante tempo kan dim, en in een vir verklaring.
Stap 3: Op en af in een vir ()
Om die LED teen 'n konstante tempo te laat verdof, moet die vertraging () met 'n eksponensiële tempo toeneem, omdat die helfte van die werksiklus altyd die helfte van die helderheid sal lewer. My eerste gedagte was om die kaart () -funksie te probeer gebruik, maar dit is lineêr.
Die lyn:
int d = (16-i/16)^2;
bereken die omgekeerde vierkant van die helderheid om die lengte van die vertraging te bepaal.
Kopieer/plak die onderstaande skets in die Arduino IDE en u sal sien dat die LED teen 'n konstante tempo in en uit sal vervaag.
leemte opstelling ()
{pinMode (9, OUTPUT); } leemte lus () {int x = 1; int pin = 9; vir (int i = 0; i> -1; i = i + x) {int d = (16 -i/16)^2; analogWrite (pen, i); vertraging (d); as (i == 255) x = -1; // skakel rigting op hoogtepunt}}