INHOUDSOPGAWE:

RaspberryPi: vervaag 'n LED in en uit: 4 stappe (met foto's)
RaspberryPi: vervaag 'n LED in en uit: 4 stappe (met foto's)

Video: RaspberryPi: vervaag 'n LED in en uit: 4 stappe (met foto's)

Video: RaspberryPi: vervaag 'n LED in en uit: 4 stappe (met foto's)
Video: Hoe installeer ik Home Assistant op een Raspberry PI 4 met SSD #16 2024, Julie
Anonim
RaspberryPi: vervaag 'n LED in en uit
RaspberryPi: vervaag 'n LED in en uit

Die volgende stappe is eksperimente om te illustreer hoe LED's werk. Hulle wys hoe u 'n LED teen 'n gelyke snelheid kan verdof en hoe u dit in en uit kan vervaag.

Jy sal nodig hê:

  • RaspberryPi (ek het 'n ouer Pi gebruik, my Pi-3 is in gebruik, maar enige Pi sal werk.)
  • Broodbord
  • 5 mm rooi LED
  • 330 Ω Weerstand (nie krities nie 220-560 Ω sal werk.)
  • Aansluitdraad

Die Pi-skoenmaker wat ek van Adafruit gebruik het, is nie nodig nie, maar dit maak broodplank makliker.

WiringPi is 'n stel biblioteke vir die programmering van die RaspberryPi in C. Instruksies vir aflaai, installering en gebruik is geleë op

Volg die instruksies op hierdie bladsy om wiringPi te installeer:

Om 'n lys met bedradingPi -nommers te kry, voer gpio readall in op die opdragreël.

In nuwer weergawes van Raspian is wiringPi standaard geïnstalleer.

Stap 1: Pulse Width Modulation

Pulswydte modulasie
Pulswydte modulasie
Pulswydte modulasie
Pulswydte modulasie
Pulswydte modulasie
Pulswydte modulasie

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 wiringPi pwmWrite (pen, n) funksie waar n 'n waarde van 0 tot 255 het. 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: LED en weerstand

LED en weerstand
LED en weerstand

Dit is nie nodig nie, maar as u 'n paar hiervan byderhand het, kan u die boordplank baie makliker maak.

Soldeer 'n weerstand aan die kort LED van 'n LED. Gebruik 'n weerstand van 220-560 Ohm.

Stap 3: Ongelyke verduistering

Ongelyke verduistering
Ongelyke verduistering

Bou die stroombaan soos in die diagram. Dit is net soos die kring om 'n LED te knip. Dit gebruik wiringPi pin 1 omdat u 'n PWM -pin moet gebruik. Stel die program saam 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.

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

* Stel saam: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade1.c -lwiringPi * * Uitvoering: sudo./fade1 * * Alle speldnommers is bedradingPi -nommers, tensy anders gespesifiseer. ************************************************* *****************/ #include int main () {wiringPiSetup (); // Opstelling benodig deur wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Merk/spasie af int i; terwyl (1) {vir (i = 255; i> -1; i--) {pwmWrite (1, i); vertraging (10); } vir (i = 0; i <256; i ++) {pwmWrite (1, i); vertraging (10); }}}

Die volgende stap wys hoe u die LED teen 'n konstante tempo kan dim, en in een vir verklaring.

Stap 4: Stap 4: Op en af in een vir (), en teen 'n gelyke koers

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.

Die lyn:

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

bereken die omgekeerde vierkant van die helderheid om die lengte van die vertraging te bepaal. Stel hierdie program saam en voer dit uit, en u sal sien dat die LED teen 'n konstante tempo in en uit sal vervaag.

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

* Stel saam: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade2.c -lwiringPi * * Uitvoering: sudo./fade2 * * Alle speldnommers is bedradingPi -nommers, tensy anders gespesifiseer. ************************************************* *****************/ #include int main () {wiringPiSetup (); // Opstelling benodig deur wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Merk/spasie -modus terwyl (1) {int i; int x = 1; vir (i = 0; i> -1; i = i + x) {int d = (16 -i/16)^2; // calc omgekeerde vierkant van indeks pwmWrite (1, i); vertraging (d); as (i == 255) x = -1; // skakel rigting op hoogtepunt}}}

Aanbeveel: