Indholdsfortegnelse:

RaspberryPi: Fade en LED ind og ud: 4 trin (med billeder)
RaspberryPi: Fade en LED ind og ud: 4 trin (med billeder)

Video: RaspberryPi: Fade en LED ind og ud: 4 trin (med billeder)

Video: RaspberryPi: Fade en LED ind og ud: 4 trin (med billeder)
Video: How To Use Addressable RGB WS2812B LED Strips With a Raspberry Pi Single Board Computer 2024, November
Anonim
RaspberryPi: Fade en LED ind og ud
RaspberryPi: Fade en LED ind og ud

Følgende trin er eksperimenter for at illustrere, hvordan lysdioder fungerer. De viser, hvordan man dæmper en LED i en jævn hastighed, og hvordan man falmer den ind og ud.

Du får brug for:

  • RaspberryPi (jeg brugte en ældre Pi, min Pi-3 er i brug, men enhver Pi fungerer.)
  • Brødbræt
  • 5 mm rød LED
  • 330 Ω modstand (ikke kritisk 220-560 Ω virker.)
  • Tilslutningstråd

Pi-skomageren, jeg brugte fra Adafruit, er ikke nødvendig, men det gør breadboarding lettere.

WiringPi er et sæt biblioteker til programmering af RaspberryPi i C. Instruktioner til download, installation og brug findes på

Følg instruktionerne på denne side for at installere wiringPi:

For at få en liste over wiringPi pin -numre skal du indtaste gpio readall på kommandolinjen.

I nyere versioner af Raspian wiringPi er som standard installeret.

Trin 1: Pulsbreddemodulation

Pulsbredde modulering
Pulsbredde modulering
Pulsbredde modulering
Pulsbredde modulering
Pulsbredde modulering
Pulsbredde modulering

Lysdioder kører altid med den samme spænding uanset lysstyrken. Lysstyrken bestemmes af en firkantbølgeoscillator, og den tid, spændingen er høj, bestemmer lysstyrken. Dette kaldes Pulse Width Modulation (PWM). Dette styres af wiringPi pwmWrite (pin, n) -funktionen, hvor n har en værdi fra 0 til 255. Hvis n = 2 vil LED'en være dobbelt så skarp som n = 1. Lysstyrken fordobles altid, når n fordobles. Så n = 255 vil være dobbelt så lyst som n = 128.

Værdien af n udtrykkes ofte som en procentdel, der kaldes duty cycle. Billederne viser oscilloskopspor for 25, 50 og 75% driftscyklusser.

Trin 2: LED og modstand

LED og modstand
LED og modstand

Dette er ikke nødvendigt, men at have et par af disse praktisk kan gøre breadboarding meget lettere.

Lod en modstand til den korte LED på en LED. Brug en 220-560 Ohm modstand.

Trin 3: Ujævn dæmpning

Ujævn dæmpning
Ujævn dæmpning

Byg kredsløbet som i diagrammet. Dette er ligesom kredsløbet til at blinke en LED. Den bruger wiringPi pin 1, fordi du skal bruge en PWM -aktiveret pin. Kompilér programmet og kør det. Du vil bemærke, at jo lysere LED'en er, jo langsommere dæmpes den. Når det nærmer sig det svageste, bliver det meget svagere meget hurtigt.

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

* Kompiler: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade1.c -lwiringPi * * Udfør: sudo./fade1 * * Alle pin -numre er wiringPi -tal, medmindre andet er angivet. ************************************************** *****************/ #include int main () {wiringPiSetup (); // Opsætning kræves af wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Mark/Space mode 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 næste trin viser, hvordan man dæmper LED'en med en konstant hastighed, og i en til erklæring.

Trin 4: Trin 4: Op og ned i én for () og med en jævn hastighed

For at LED'en skal dæmpe med en konstant hastighed, skal forsinkelsen () stige med en eksponentiel hastighed, fordi halvdelen af driftscyklussen altid vil producere halvdelen af lysstyrken.

Linjen:

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

beregner den inverse firkant af lysstyrken for at bestemme forsinkelsens længde. Kompilér og kør dette program, og du vil se, at LED'en vil falme ind og ud med en konstant hastighed.

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

* Kompiler: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade2.c -lwiringPi * * Udfør: sudo./fade2 * * Alle pin -numre er wiringPi -tal, medmindre andet er angivet. ************************************************* *****************/ #include int main () {wiringPiSetup (); // Opsætning kræves af wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Mark/mellemrumstilstand mens (1) {int i; int x = 1; for (i = 0; i> -1; i = i + x) {int d = (16 -i/16)^2; // calc invers firkant af indeks pwmWrite (1, i); forsinkelse (d); hvis (i == 255) x = -1; // skift retning i spidsen}}}

Anbefalede: