Innehållsförteckning:

RaspberryPi: Tona in och ut en LED: 4 steg (med bilder)
RaspberryPi: Tona in och ut en LED: 4 steg (med bilder)

Video: RaspberryPi: Tona in och ut en LED: 4 steg (med bilder)

Video: RaspberryPi: Tona in och ut en LED: 4 steg (med bilder)
Video: Начало работы с QLC+ Управление цветомузыкой с компьютера. Как управлять светом. 2024, November
Anonim
RaspberryPi: Tona in och ut en LED
RaspberryPi: Tona in och ut en LED

Följande steg är experiment för att illustrera hur lysdioder fungerar. De visar hur man dämpar en LED i en jämn takt och hur man bleknar den in och ut.

Du kommer behöva:

  • RaspberryPi (jag använde en äldre Pi, min Pi-3 används, men vilken Pi som helst fungerar.)
  • Bakbord
  • 5 mm röd LED
  • 330 Ω motstånd (Ej kritisk 220-560 Ω fungerar.)
  • Anslutningstråd

Pi-skomakaren jag använde från Adafruit är inte nödvändig, men det underlättar brädbrädan.

WiringPi är en uppsättning bibliotek för programmering av RaspberryPi i C. Instruktioner för nedladdning, installation och användning finns på

För att installera wiringPi följ instruktionerna på den här sidan:

För att få en lista över wiringPi -pin -nummer anger du gpio readall på kommandoraden.

I nyare versioner av Raspian wiringPi installeras som standard.

Steg 1: Pulsbreddsmodulering

Pulsbreddsmodulering
Pulsbreddsmodulering
Pulsbreddsmodulering
Pulsbreddsmodulering
Pulsbreddsmodulering
Pulsbreddsmodulering

Lysdioder körs alltid med samma spänning oavsett ljusstyrka. Ljusstyrkan bestäms av en fyrkantvågoscillator och den tid som spänningen är hög avgör ljusstyrkan. Detta kallas Pulse Width Modulation (PWM). Detta styrs av funktionen wiringPi pwmWrite (pin, n) där n har ett värde från 0 till 255. Om n = 2 lyser lysdioden dubbelt så starkt som n = 1. Ljusstyrkan fördubblas alltid när n fördubblas. Så n = 255 blir dubbelt så ljus som n = 128.

Värdet på n uttrycks ofta som en procentsats som kallas arbetscykel. Bilderna visar oscilloskopspår för 25, 50 och 75% arbetscykler.

Steg 2: LED och motstånd

LED och motstånd
LED och motstånd

Detta är inte nödvändigt, men att ha några av dessa praktiska kan göra breadboarding mycket enklare.

Löd ett motstånd mot den korta LED -lampan. Använd ett 220-560 Ohm motstånd.

Steg 3: Ojämn dimning

Ojämn dimning
Ojämn dimning

Bygg kretsen som i diagrammet. Detta är precis som kretsen för att blinka en lysdiod. Den använder wiringPi pin 1 eftersom du måste använda en PWM -aktiverad pin. Kompilera programmet och kör det. Du kommer att märka att ju ljusare LED -lampan är, desto långsammare dämpar den. När det närmar sig det svagaste kommer det att bli mörkare väldigt snabbt.

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

* Kompilera: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade1.c -lwiringPi * * Execute: sudo./fade1 * * Alla pin -nummer är ledningarPi -nummer om inget annat anges. ************************************************** *****************/ #include int main () {wiringPiSetup (); // Installation krävs av wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Markera/mellanslag int i; medan (1) {för (i = 255; i> -1; i--) {pwmWrite (1, i); fördröjning (10); } för (i = 0; i <256; i ++) {pwmWrite (1, i); fördröjning (10); }}}

Nästa steg visar hur man dämpar lysdioden med en konstant hastighet, och i ett för uttalande.

Steg 4: Steg 4: Upp och ner i en för (), och i en jämn takt

För att lysdioden ska dimma med en konstant hastighet måste fördröjningen () öka med en exponentiell hastighet eftersom halva arbetscykeln alltid ger halva ljusstyrkan.

Linjen:

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

beräknar ljusets inversa kvadrat för att bestämma fördröjningens längd. Kompilera och kör detta program så ser du att lysdioden kommer att blekna in och ut med en konstant hastighet.

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

* Kompilera: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade2.c -lwiringPi * * Execute: sudo./fade2 * * Alla pin -nummer är ledningarPi -nummer om inget annat anges. ************************************************** *****************/ #include int main () {wiringPiSetup (); // Installation krävs av wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Markera/mellanslagsläge medan (1) {int i; int x = 1; för (i = 0; i> -1; i = i + x) {int d = (16 -i/16)^2; // calc invers square of index pwmWrite (1, i); fördröjning (d); om (i == 255) x = -1; // växla riktning vid topp}}}

Rekommenderad: