Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
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
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
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
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}}}