Kazalo:

RaspberryPi: Zmanjšajte vhod in izklop LED: 4 koraki (s slikami)
RaspberryPi: Zmanjšajte vhod in izklop LED: 4 koraki (s slikami)

Video: RaspberryPi: Zmanjšajte vhod in izklop LED: 4 koraki (s slikami)

Video: RaspberryPi: Zmanjšajte vhod in izklop LED: 4 koraki (s slikami)
Video: ComfyUI Tutorial - How to Install ComfyUI on Windows, RunPod & Google Colab | Stable Diffusion SDXL 2024, November
Anonim
RaspberryPi: Zmanjšajte vhod in izklop LED
RaspberryPi: Zmanjšajte vhod in izklop LED

Naslednji koraki so poskusi, ki ponazarjajo delovanje LED. Prikazujejo, kako enakomerno zatemniti LED in kako ga zbledeti.

Boste potrebovali:

  • RaspberryPi (uporabljal sem starejši Pi, moj Pi-3 je v uporabi, vendar bo kateri koli Pi deloval.)
  • Ogledna plošča
  • 5 mm rdeča LED
  • 330 Ω upor (ni kritično 220-560 Ω bo delovalo.)
  • Priključna žica

Pi-cobbler, ki sem ga uporabil pri Adafruit, ni nujen, vendar olajša izdelavo kroga.

WiringPi je niz knjižnic za programiranje RaspberryPi v C. Navodila za prenos, namestitev in uporabo se nahajajo na

Za namestitev ožičenja Pi sledite navodilom na tej strani:

Če želite dobiti seznam ožičenja, številke pin PIN vnesite gpio readall v ukazno vrstico.

V novejših različicah Raspian wiringPi je privzeto nameščen.

1. korak: Modulacija širine impulza

Modulacija širine impulza
Modulacija širine impulza
Modulacija širine impulza
Modulacija širine impulza
Modulacija širine impulza
Modulacija širine impulza

LED diode vedno delujejo pri isti napetosti, ne glede na svetlost. Svetlost določa kvadratni valovni oscilator, čas, ko je napetost visoka, pa svetlost. To se imenuje Pulse Width Modulation (PWM). To nadzira funkcija wiringPi pwmWrite (pin, n), kjer ima n vrednost od 0 do 255. Če je n = 2, bo LED -dioda dvakrat svetlejša kot n = 1. Svetlost se vedno podvoji, ko se n podvoji. Torej bo n = 255 dvakrat svetlejše od n = 128.

Vrednost n je pogosto izražena kot odstotek, imenovan delovni cikel. Slike prikazujejo sledi osciloskopa za 25, 50 in 75% delovne cikle.

Korak: LED in upor

LED in upor
LED in upor

To ni nujno, vendar če imate nekaj teh pri roki, lahko olajšate izdelavo kroga.

Spajate upor na kratek vodnik LED. Uporabite upor 220-560 Ohm.

3. korak: Neenakomerno zatemnitev

Ne-celo zatemnitev
Ne-celo zatemnitev

Zgradite vezje, kot je prikazano na diagramu. To je tako kot vezje za utripanje LED. Uporablja ožičenje Pi pin 1, ker morate uporabiti pin, ki podpira PWM. Sestavite program in ga zaženite. Opazili boste, da svetlejša kot je LED, počasneje se zatemni. Ko se približa najtemnejšemu, bo zelo hitro zatemnilo.

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

* Sestavi: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade1.c -lwiringPi * * Izvedi: sudo./fade1 * * Vse številke pin so ožičenje Pi številke, razen če ni drugače določeno. ************************************************ ****************/ #include int main () {wiringPiSetup (); // Zahtevana nastavitev z ožičenjemPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Označi/preskusni način int i; medtem ko (1) {for (i = 255; i> -1; i--) {pwmWrite (1, i); zamuda (10); } za (i = 0; i <256; i ++) {pwmWrite (1, i); zamuda (10); }}}

Naslednji korak prikazuje, kako zatemniti LED s konstantno hitrostjo in v enem za izjavo.

4. korak: 4. korak: gor in dol v enem za () in enakomerno

Da LED dioda zatemni s konstantno hitrostjo, se mora zakasnitev () povečati z eksponentno hitrostjo, ker bo pol delovnega cikla vedno proizvedlo polovico svetlosti.

Linija:

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

izračuna inverzni kvadrat svetlosti, da določi dolžino zamude. Sestavite in zaženite ta program in videli boste, da bo LED svetlela in bledila s konstantno hitrostjo.

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

* Sestavi: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade2.c -lwiringPi * * Izvedi: sudo./fade2 * * Vse pin številke so ožičenje Pi številke, razen če ni drugače določeno. ************************************************ ****************/ #include int main () {wiringPiSetup (); // Zahtevana nastavitev z ožičenjemPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Označi/presledi način while (1) {int i; int x = 1; za (i = 0; i> -1; i = i + x) {int d = (16 -i/16)^2; // izračunaj inverzni kvadrat indeksa pwmWrite (1, i); zamuda (d); če (i == 255) x = -1; // preklop smeri na vrhuncu}}}

Priporočena: