Sisukord:

RaspberryPi: LED -i kustutamine sisse ja välja: 4 sammu (piltidega)
RaspberryPi: LED -i kustutamine sisse ja välja: 4 sammu (piltidega)

Video: RaspberryPi: LED -i kustutamine sisse ja välja: 4 sammu (piltidega)

Video: RaspberryPi: LED -i kustutamine sisse ja välja: 4 sammu (piltidega)
Video: Node-RED on Raspberry Pi for Relay/LED Light Control (IoT) 2024, Juuli
Anonim
RaspberryPi: kustutage LED sisse ja välja
RaspberryPi: kustutage LED sisse ja välja

Järgmised sammud on katsed, mis illustreerivad valgusdioodide tööd. Need näitavad, kuidas LED -i ühtlase kiirusega hämardada ja kuidas seda sisse ja välja kustutada.

Sa vajad:

  • RaspberryPi (kasutasin vanemat Pi, minu Pi-3 on kasutusel, kuid mis tahes Pi töötab.)
  • Leivalaud
  • 5 mm punane LED
  • 330 Ω takisti (mitte kriitiline 220-560 Ω töötab.)
  • Ühendage traat

Pi-cobbler, mida ma Adafruitist kasutasin, pole vajalik, kuid see muudab leivalaudamise lihtsamaks.

WiringPi on teekide komplekt RaspberryPi programmeerimiseks C -s. Juhised allalaadimiseks, installimiseks ja kasutamiseks leiate aadressilt

WiringPi installimiseks järgige sellel lehel olevaid juhiseid:

WiringPi pin -numbrite loendi saamiseks sisestage käsureale gpio readall.

Raspiani uuemates versioonides on wiringPi vaikimisi installitud.

Samm: impulsi laiuse moduleerimine

Impulsi laiuse modulatsioon
Impulsi laiuse modulatsioon
Impulsi laiuse modulatsioon
Impulsi laiuse modulatsioon
Impulsi laiuse modulatsioon
Impulsi laiuse modulatsioon

LED -id töötavad alati sama pingega, olenemata heledusest. Heleduse määrab ruutlaine ostsillaator ja heleduse määrab ajavahemik, mille jooksul pinge on kõrge. Seda nimetatakse impulsi laiuse modulatsiooniks (PWM). Seda juhib funktsioon wiringPi pwmWrite (tihvt, n), kus n väärtus on 0 kuni 255. Kui n = 2, on LED kaks korda heledam kui n = 1. Heledus kahekordistub alati, kui n kahekordistub. Seega n = 255 on kaks korda heledam kui n = 128.

N -i väärtust väljendatakse sageli protsentides, mida nimetatakse töötsükliks. Piltidel on ostsilloskoobi jäljed 25, 50 ja 75% töötsüklite jaoks.

Samm: LED ja takisti

LED ja takisti
LED ja takisti

See pole vajalik, kuid mõned neist käepärast võivad leivalauaga sõitmise palju lihtsamaks muuta.

Jootke takisti LED -i lühikese juhtjoone külge. Kasutage 220-560 oomi takistit.

3. samm: ühtlase hämardamise tühistamine

Ühtlane hämardamine
Ühtlane hämardamine

Ehitage skeem nagu skeemil. See on täpselt nagu LED -i vilkumise ahel. See kasutab wiringPi tihvti 1, kuna peate kasutama PWM -toega tihvti. Koostage programm ja käivitage see. Märkate, et mida heledam on LED, seda aeglasemalt see tuhmub. Hämara lähedale läheb hämarduma väga kiiresti.

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

* Kompileeri: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade1.c -lwiringPi * * Käivita: sudo./fade1 * * Kõik pin -numbrid on juhtmestikugaPi numbrid, kui pole teisiti määratud. ************************************************* ****************/ #include int main () {wiringPiSetup (); // Seadistamine on vajalik wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Märgi/tühikurežiim int i; samas (1) {jaoks (i = 255; i> -1; i--) {pwmWrite (1, i); viivitus (10); } jaoks (i = 0; i <256; i ++) {pwmWrite (1, i); viivitus (10); }}}

Järgmises etapis näidatakse, kuidas LED -i ühtlase kiirusega hämardada, ja ühes avalduses.

4. samm: 4. samm: üles ja alla ühe eest () ja ühtlase kiirusega

Et valgusdiood tuhmuks püsiva kiirusega, peab viivitus () suurenema eksponentsiaalse kiirusega, sest pool töötsüklist annab alati poole heledusest.

Rida:

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

arvutab heleduse pöördruudu, et määrata viivituse pikkus. Kompileerige ja käivitage see programm ning näete, et LED kustub ja kustub ühtlase kiirusega.

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

* Kompileeri: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade2.c -lwiringPi * * Käivita: sudo./fade2 * * Kõik pin -numbrid on juhtmestikugaPi numbrid, kui pole teisiti määratud. ************************************************* ****************/ #include int main () {wiringPiSetup (); // Seadistamine on vajalik wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Märgi/tühikurežiim samas (1) {int i; int x = 1; jaoks (i = 0; i> -1; i = i + x) {int d = (16 -i/16)^2; // indeksi pwmWrite (1, i) pöördruudu arvutamine; viivitus (d); kui (i == 255) x = -1; // tipu suuna muutmine}}}

Soovitan: