Innholdsfortegnelse:

RaspberryPi: Fade en LED inn og ut: 4 trinn (med bilder)
RaspberryPi: Fade en LED inn og ut: 4 trinn (med bilder)

Video: RaspberryPi: Fade en LED inn og ut: 4 trinn (med bilder)

Video: RaspberryPi: Fade en LED inn og ut: 4 trinn (med bilder)
Video: ESP32 Tutorial 5 - LED Fade, control brightness of an LED -ESP32 IoT Learnig kit 2024, November
Anonim
RaspberryPi: Fade en LED inn og ut
RaspberryPi: Fade en LED inn og ut

Følgende trinn er eksperimenter for å illustrere hvordan lysdioder fungerer. De viser hvordan du kan dempe en LED med en jevn hastighet og hvordan du kan fade den inn og ut.

Du vil trenge:

  • RaspberryPi (jeg brukte en eldre Pi, min Pi-3 er i bruk, men hvilken som helst Pi vil fungere.)
  • Brødbrett
  • 5 mm rød LED
  • 330 Ω motstand (ikke kritisk 220-560 Ω vil fungere.)
  • Tilkobling Wire

Pi-skomakeren jeg brukte fra Adafruit er ikke nødvendig, men det gjør breadboarding enklere.

WiringPi er et sett med biblioteker for programmering av RaspberryPi i C. Instruksjoner for nedlasting, installasjon og bruk finnes på

Følg instruksjonene på denne siden for å installere wiringPi:

For å få en liste over wiringPi pin -numre, skriv inn gpio readall på kommandolinjen.

I nyere versjoner av Raspian wiringPi er installert som standard.

Trinn 1: Pulsbreddemodulasjon

Pulsbreddemodulasjon
Pulsbreddemodulasjon
Pulsbreddemodulasjon
Pulsbreddemodulasjon
Pulsbreddemodulasjon
Pulsbreddemodulasjon

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 wiringPi pwmWrite (pin, n) -funksjonen der n har en verdi fra 0 til 255. Hvis n = 2 vil LED -en være dobbelt så lyssterk 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: LED og motstand

LED og motstand
LED og motstand

Dette er ikke nødvendig, men å ha noen få av disse hendige kan gjøre breadboarding mye enklere.

Lodd en motstand til den korte LED -en. Bruk en 220-560 Ohm motstand.

Trinn 3: Ujevn demping

Ujevn demping
Ujevn demping

Bygg kretsen som i diagrammet. Dette er akkurat som kretsen for å blinke en LED. Den bruker wiringPi pin 1 fordi du må bruke en PWM -aktivert pin. Kompiler programmet og kjør det. 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.

/******************************************************************

* Kompiler: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade1.c -lwiringPi * * Utfør: sudo./fade1 * * Alle pin -tall er lednings -Pi -tall med mindre annet er spesifisert. ************************************************* *****************/ #include int main () {wiringPiSetup (); // Oppsett som kreves av wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Merk/mellomrom -modus int i; mens (1) {for (i = 255; i> -1; i--) {pwmWrite (1, i); forsinkelse (10); } for (i = 0; i <256; i ++) {pwmWrite (1, i); forsinkelse (10); }}}

Det neste trinnet viser hvordan du dæmper LED -en med en konstant hastighet, og i en for uttalelse.

Trinn 4: Trinn 4: Opp og ned i ett for (), og til en jevn hastighet

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.

Køen:

int d = (16-i/16)^2;

beregner den inverse firkanten av lysstyrken for å bestemme lengden på forsinkelsen. Kompiler og kjør dette programmet, og du vil se at LED -en vil falme inn og ut med en konstant hastighet.

/******************************************************************

* Kompiler: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade2.c -lwiringPi * * Utfør: sudo./fade2 * * Alle pin -tall er lednings -Pi -tall med mindre annet er spesifisert. ************************************************* *****************/ #include int main () {wiringPiSetup (); // Oppsett som kreves av wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Merk/mellomrom -modus mens (1) {int i; int x = 1; for (i = 0; i> -1; i = i + x) {int d = (16 -i/16)^2; // calc invers square of index pwmWrite (1, i); forsinkelse (d); hvis (i == 255) x = -1; // bytt retning på topp}}}

Anbefalt: