Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Følgende trinn er eksperimenter for å illustrere hvordan lysdioder fungerer. De illustrerer hvordan du kan dempe en LED i en jevn hastighet og hvordan du kan fade den inn og ut.
Du vil trenge:
- Arduino (jeg brukte en duo)
- Brødbrett
- 5 mm rød LED
- 330 Ω motstand (ikke kritisk 330-560 Ω vil fungere.)
- 22 Gauge Solid Hookup Wire
Delene som trengs for disse eksperimentene er inkludert i alle oppstartssettene for Arduino.
Trinn 1: Pulsmodulering forklart
Lysdioder kjører alltid med samme spenning uavhengig av lysstyrken. Lysstyrken bestemmes av en firkantbølge -oscillator, og hvor lang tid spenningen er høy avgjør lysstyrken. Dette kalles Pulse Width Modulation (PWM). Dette styres av Arduino analogWrite (pin, n) -funksjonen der n har en verdi fra 0 til 255. analogWrite () sender ut PWM, ikke sann analog. Hvis n = 2 vil lysdioden være dobbelt så sterk som n = 1. Lysstyrken dobles alltid når n dobler. Så n = 255 vil være dobbelt så lyst som n = 128.
Verdien av n er ofte uttrykt som en prosentandel som kalles duty cycle. Bildene viser oscilloskopspor for 25, 50 og 75% driftssykluser.
Trinn 2: Ujevn demping
Bygg kretsen som i diagrammet. Dette er akkurat som kretsen for å blinke en LED. Den bruker pin 9 fordi du må bruke en PWM -aktivert pin.
Kopier/lim inn skissen nedenfor i Arduino IDE og kjør den.
Du vil merke at jo lysere LED -lampen er, jo saktere dempes den. Når det nærmer seg det svakeste, vil det bli svakere veldig fort.
ugyldig oppsett ()
{pinMode (9, OUTPUT); } void loop () {int pin = 9; for (int i = 255; i> -1; i--) {analogWrite (pin, i); forsinkelse (10); } for (int i = 0; i <256; i ++) {analogWrite (pin, i); forsinkelse (10); }}
}
Det neste trinnet viser hvordan du dæmper LED -en med en konstant hastighet, og i en for uttalelse.
Trinn 3: Opp og ned i ett for ()
For at LED -en skal dimme med en konstant hastighet, må forsinkelsen () øke med en eksponensiell hastighet fordi halve driftssyklusen alltid gir halvparten av lysstyrken. Min første tanke var å prøve å bruke kartfunksjonen (), men den er lineær.
Køen:
int d = (16-i/16)^2;
beregner den inverse firkanten av lysstyrken for å bestemme lengden på forsinkelsen.
Kopier/lim inn skissen nedenfor i Arduino IDE, og du vil se at lysdioden vil falme inn og ut med en konstant hastighet.
ugyldig oppsett ()
{pinMode (9, OUTPUT); } hulrom () {int x = 1; int pin = 9; for (int i = 0; i> -1; i = i + x) {int d = (16 -i/16)^2; analogWrite (pin, i); forsinkelse (d); hvis (i == 255) x = -1; // bytt retning på topp}}