Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Følgende trinn er eksperimenter for å illustrere hvordan lysdioder fungerer. De viser hvordan du kan dempe en LED med en jevn hastighet og hvordan du kan fade den inn og ut.
Du vil trenge:
- RaspberryPi (jeg brukte en eldre Pi, min Pi-3 er i bruk, men hvilken som helst Pi vil fungere.)
- Brødbrett
- 5 mm rød LED
- 330 Ω motstand (ikke kritisk 220-560 Ω vil fungere.)
- Tilkobling Wire
Pi-skomakeren jeg brukte fra Adafruit er ikke nødvendig, men det gjør breadboarding enklere.
WiringPi er et sett med biblioteker for programmering av RaspberryPi i C. Instruksjoner for nedlasting, installasjon og bruk finnes på
Følg instruksjonene på denne siden for å installere wiringPi:
For å få en liste over wiringPi pin -numre, skriv inn gpio readall på kommandolinjen.
I nyere versjoner av Raspian wiringPi er installert som standard.
Trinn 1: Pulsbreddemodulasjon
Lysdioder kjører alltid med samme spenning uavhengig av lysstyrken. Lysstyrken bestemmes av en firkantbølge -oscillator, og hvor lang tid spenningen er høy avgjør lysstyrken. Dette kalles Pulse Width Modulation (PWM). Dette styres av wiringPi pwmWrite (pin, n) -funksjonen der n har en verdi fra 0 til 255. Hvis n = 2 vil LED -en være dobbelt så lyssterk som n = 1. Lysstyrken dobles alltid når n dobler. Så n = 255 vil være dobbelt så lyst som n = 128.
Verdien av n er ofte uttrykt som en prosentandel som kalles duty cycle. Bildene viser oscilloskopspor for 25, 50 og 75% driftssykluser.
Trinn 2: LED og motstand
Dette er ikke nødvendig, men å ha noen få av disse hendige kan gjøre breadboarding mye enklere.
Lodd en motstand til den korte LED -en. Bruk en 220-560 Ohm motstand.
Trinn 3: Ujevn demping
Bygg kretsen som i diagrammet. Dette er akkurat som kretsen for å blinke en LED. Den bruker wiringPi pin 1 fordi du må bruke en PWM -aktivert pin. Kompiler programmet og kjør det. Du vil merke at jo lysere LED -lampen er, jo saktere dempes den. Når det nærmer seg det svakeste, vil det bli svakere veldig fort.
/******************************************************************
* Kompiler: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade1.c -lwiringPi * * Utfør: sudo./fade1 * * Alle pin -tall er lednings -Pi -tall med mindre annet er spesifisert. ************************************************* *****************/ #include int main () {wiringPiSetup (); // Oppsett som kreves av wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Merk/mellomrom -modus int i; mens (1) {for (i = 255; i> -1; i--) {pwmWrite (1, i); forsinkelse (10); } for (i = 0; i <256; i ++) {pwmWrite (1, i); forsinkelse (10); }}}
Det neste trinnet viser hvordan du dæmper LED -en med en konstant hastighet, og i en for uttalelse.
Trinn 4: Trinn 4: Opp og ned i ett for (), og til en jevn hastighet
For at LED -en skal dimme med en konstant hastighet, må forsinkelsen () øke med en eksponensiell hastighet fordi halve driftssyklusen alltid gir halvparten av lysstyrken.
Køen:
int d = (16-i/16)^2;
beregner den inverse firkanten av lysstyrken for å bestemme lengden på forsinkelsen. Kompiler og kjør dette programmet, og du vil se at LED -en vil falme inn og ut med en konstant hastighet.
/******************************************************************
* Kompiler: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade2.c -lwiringPi * * Utfør: sudo./fade2 * * Alle pin -tall er lednings -Pi -tall med mindre annet er spesifisert. ************************************************* *****************/ #include int main () {wiringPiSetup (); // Oppsett som kreves av wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Merk/mellomrom -modus mens (1) {int i; int x = 1; for (i = 0; i> -1; i = i + x) {int d = (16 -i/16)^2; // calc invers square of index pwmWrite (1, i); forsinkelse (d); hvis (i == 255) x = -1; // bytt retning på topp}}}