Sadržaj:

RaspberryPi: Ugasite LED ulaz i izlaz: 4 koraka (sa slikama)
RaspberryPi: Ugasite LED ulaz i izlaz: 4 koraka (sa slikama)

Video: RaspberryPi: Ugasite LED ulaz i izlaz: 4 koraka (sa slikama)

Video: RaspberryPi: Ugasite LED ulaz i izlaz: 4 koraka (sa slikama)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Juli
Anonim
RaspberryPi: Ugasite i isključite LED diodu
RaspberryPi: Ugasite i isključite LED diodu

Sljedeći koraci su eksperimenti koji ilustriraju kako LED diode rade. Oni pokazuju kako zatamniti LED jednakomjernom brzinom i kako ga ugasiti i ugasiti.

Trebat će vam:

  • RaspberryPi (koristio sam stariji Pi, moj Pi-3 je u upotrebi, ali bilo koji Pi će raditi.)
  • Breadboard
  • 5 mm crvena LED dioda
  • Otpornik od 330 Ω (Nije kritično 220-560 Ω će raditi.)
  • Hookup Wire

Pi-cobbler koji sam koristio iz Adafruit-a nije potreban, ali olakšava izradu matičnih ploča.

WiringPi je skup biblioteka za programiranje RaspberryPi -a u C. Upute za preuzimanje, instaliranje i upotrebu nalaze se na

Za instaliranje ožičenjaPi slijedite upute na ovoj stranici:

Da biste dobili spisak ožičenjaPi brojevi PIN -ova unesite gpio readall u komandnu liniju.

U novijim verzijama Raspian wiringPi je standardno instaliran.

Korak 1: Modulacija širine impulsa

Modulacija širine impulsa
Modulacija širine impulsa
Modulacija širine impulsa
Modulacija širine impulsa
Modulacija širine impulsa
Modulacija širine impulsa

LED diode uvijek rade na istom naponu bez obzira na svjetlinu. Svjetlina je određena oscilatorom kvadratnog vala, a vrijeme koje je visoki napon određuje svjetlinu. To se naziva Pulse Width Modulation (PWM). Ovo se kontrolira pomoću funkcije wiringPi pwmWrite (pin, n) gdje n ima vrijednost od 0 do 255. Ako je n = 2 LED će biti dvostruko jača od n = 1. Svjetlina se uvijek udvostručuje kada se n udvostruči. Tako će n = 255 biti dvostruko svjetlije od n = 128.

Vrijednost n često se izražava kao postotak koji se naziva radni ciklus. Slike prikazuju tragove osciloskopa za 25, 50 i 75% ciklusa rada.

Korak 2: LED i otpornik

LED i otpornik
LED i otpornik

To nije potrebno, ali imati nekoliko ovih pri ruci može znatno olakšati izradu matične ploče.

Lemiti otpornik na kratki LED diode. Koristite otpornik 220-560 Ohm.

Korak 3: Neujednačeno zatamnjivanje

Un-even Dimming
Un-even Dimming

Izgradite krug kao na dijagramu. Ovo je isto kao i krug koji treperi LED. Koristi wiringPi pin 1 jer morate koristiti pin s omogućenim PWM -om. Sastavite program i pokrenite ga. Primijetit ćete da je LED svjetlija što je svjetlija sporije slabi. Kako se približava najsvjetlijem, postajat će sve tamniji vrlo brzo.

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

* Kompiliraj: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade1.c -lwiringPi * * Izvrši: sudo./fade1 * * Svi pin brojevi su ožičeni Pi brojevi, osim ako nije drugačije naznačeno. ************************************************** ****************/ #include int main () {wiringPiSetup (); // Postavljanje potrebno wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // način označavanja/razmaka int i; while (1) {for (i = 255; i> -1; i--) {pwmWrite (1, i); kašnjenje (10); } za (i = 0; i <256; i ++) {pwmWrite (1, i); kašnjenje (10); }}}

Sljedeći korak pokazuje kako zatamniti LED diodu konstantnom brzinom, au jednom za iskaz.

Korak 4: Korak 4: Gore i dolje u jednom For () i po jednakoj stopi

Da bi LED prigušivao konstantnom brzinom, kašnjenje () se mora povećati eksponencijalnom brzinom jer će pola radnog ciklusa uvijek proizvoditi polovinu svjetline.

Linija:

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

izračunava inverzni kvadrat svjetline kako bi odredio dužinu kašnjenja. Sastavite i pokrenite ovaj program i vidjet ćete da će LED svjetlo nestajati konstantnom brzinom.

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

* Sastavi: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade2.c -lwiringPi * * Izvrši: sudo./fade2 * * Svi pin brojevi su ožičeni Pi brojevi, osim ako nije drugačije naznačeno. ************************************************** ****************/ #include int main () {wiringPiSetup (); // Postavljanje potrebno wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Način označavanja/razmaka 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); kašnjenje (d); if (i == 255) x = -1; // prebacivanje smjera na vrhuncu}}}

Preporučuje se: