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, Srpanj
Anonim
RaspberryPi: Ugasite LED ulaz i izlaz
RaspberryPi: Ugasite LED ulaz i izlaz

Sljedeći koraci su eksperimenti koji ilustriraju način rada LED dioda. Oni pokazuju kako jednakomjerno zatamniti LED diodu i kako je ugasiti i ugasiti.

Trebat će vam:

  • RaspberryPi (koristio sam stariji Pi, moj Pi-3 je u upotrebi, ali bilo koji Pi će raditi.)
  • Oglasna ploča
  • 5 mm crvena LED dioda
  • Otpornik od 330 Ω (nije kritično 220-560 Ω će raditi.)
  • Priključna žica

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

WiringPi je skup knjižnica za programiranje RaspberryPi u C. Upute za preuzimanje, instaliranje i korištenje nalaze se na

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

Da biste dobili popis ožičenjaPi brojevi PIN -ova unesite gpio readall u naredbeni redak.

U novijim verzijama Raspian wiringPi je prema zadanim postavkama 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 pod istim naponom bez obzira na svjetlinu. Svjetlina je određena oscilatorom pravokutnog vala, a vrijeme tijekom kojeg je napon visok određuje svjetlinu. To se naziva Pulse Width Modulation (PWM). To se kontrolira pomoću funkcije wiringPi pwmWrite (pin, n) gdje n ima vrijednost od 0 do 255. Ako je n = 2, LED će biti dvaput jača od n = 1. Svjetlina se uvijek udvostručuje kad 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.

Lemite 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 poput kruga 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, postat će sve slabiji vrlo brzo.

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

* Sastavi: 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; dok (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 za () i ravnomjernom brzinom

Da bi LED dioda stakla konstantnom brzinom, kašnjenje () se mora povećavati eksponencijalno jer će pola radnog ciklusa uvijek proizvoditi polovicu svjetline.

Crta:

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

izračunava obrnuti kvadrat svjetline kako bi odredio duljinu 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čunati inverzni kvadrat indeksa pwmWrite (1, i); odgoda (d); ako je (i == 255) x = -1; // prebacivanje smjera na vrhuncu}}}

Preporučeni: