Inhoudsopgave:

RaspberryPi: een LED in- en uitfaden - Ajarnpa
RaspberryPi: een LED in- en uitfaden - Ajarnpa

Video: RaspberryPi: een LED in- en uitfaden - Ajarnpa

Video: RaspberryPi: een LED in- en uitfaden - Ajarnpa
Video: How To Use Addressable RGB WS2812B LED Strips With a Raspberry Pi Single Board Computer 2024, Juli-
Anonim
RaspberryPi: een LED in- en uitfaden
RaspberryPi: een LED in- en uitfaden

De volgende stappen zijn experimenten om te illustreren hoe LED's werken. Ze laten zien hoe je een LED gelijkmatig dimt en hoe je deze in- en uitfadt.

Je zal nodig hebben:

  • RaspberryPi (ik gebruikte een oudere Pi, mijn Pi-3 is in gebruik, maar elke Pi zal werken.)
  • Breadboard
  • 5 mm rode LED
  • Weerstand van 330 (niet kritisch 220-560 Ω zal werken.)
  • Aansluitdraad

De Pi-cobbler die ik gebruikte van Adafruit is niet nodig, maar maakt breadboarden wel makkelijker.

WiringPi is een set bibliotheken voor het programmeren van de RaspberryPi in C. Instructies voor downloaden, installeren en gebruiken vindt u op

Volg de instructies op deze pagina om bedradingPi te installeren:

Voer gpio readall in op de opdrachtregel om een lijst met bedradingspin-pinnummers te krijgen.

In nieuwere versies van Raspian bedradingPi is standaard geïnstalleerd.

Stap 1: Pulsbreedtemodulatie

Pulsbreedtemodulatie
Pulsbreedtemodulatie
Pulsbreedtemodulatie
Pulsbreedtemodulatie
Pulsbreedtemodulatie
Pulsbreedtemodulatie

LED's werken altijd op dezelfde spanning, ongeacht de helderheid. De helderheid wordt bepaald door een blokgolfoscillator en de hoeveelheid tijd dat de spanning hoog is bepaalt de helderheid. Dit wordt pulsbreedtemodulatie (PWM) genoemd. Dit wordt geregeld door de wirePi pwmWrite(pin, n) functie waarbij n een waarde heeft van 0 tot 255. Als n=2 zal de LED twee keer zo helder zijn als n=1. De helderheid verdubbelt altijd wanneer n verdubbelt. Dus n=255 zal twee keer zo helder zijn als n=128.

De waarde van n wordt vaak uitgedrukt als een percentage dat de werkcyclus wordt genoemd. De afbeeldingen tonen oscilloscoopsporen voor 25, 50 en 75% inschakelduur.

Stap 2: LED en weerstand

LED en weerstand
LED en weerstand

Dit is niet nodig, maar als je er een paar bij de hand hebt, kan breadboarden een stuk eenvoudiger worden.

Soldeer een weerstand op de korte led van een LED. Gebruik een weerstand van 220-560 Ohm.

Stap 3: Ongelijkmatig dimmen

Ongelijkmatig dimmen
Ongelijkmatig dimmen

Bouw het circuit zoals in het diagram. Dit is net als het circuit om een LED te laten knipperen. Het gebruikt wirePi pin 1 omdat je een PWM-pin nodig hebt. Compileer het programma en voer het uit. U zult merken dat hoe helderder de LED is, hoe langzamer deze dimt. Naarmate het in de buurt van het zwakste komt, wordt het heel snel zwakker.

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

* Compileren: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade1.c -lwiringPi * * Uitvoeren: sudo./fade1 * * Alle pinnummers zijn bedradingPi-nummers tenzij anders aangegeven. ************************************************** ********************/ #include int main() { bedradingPiSetup(); // Setup vereist door bedrading Pi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Mark/Space-modus int i; while(1) { for (i = 255; i > -1; i--) { pwmWrite(1, i); vertraging(10); } voor (i = 0; i < 256; i++) { pwmWrite(1, i); vertraging(10); } } }

De volgende stap laat zien hoe u de LED met een constante snelheid dimt, en in één voor verklaring.

Stap 4: Stap 4: Op en neer in één For(), en in een gelijkmatig tempo

Om de LED met een constante snelheid te laten dimmen, moet de vertraging () exponentieel toenemen, omdat de helft van de inschakelduur altijd de helft van de helderheid zal produceren.

De lijn:

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

berekent het inverse kwadraat van de helderheid om de lengte van de vertraging te bepalen. Compileer en voer dit programma uit en u zult zien dat de LED met een constante snelheid in en uit gaat.

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

* Compileren: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade2.c -lwiringPi * * Uitvoeren: sudo./fade2 * * Alle pinnummers zijn bedradingPi-nummers tenzij anders aangegeven. ************************************************** ********************/ #include int main() { bedradingPiSetup(); // Setup vereist door bedrading Pi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Mark/Space-modus while(1) { int i; int x = 1; voor (i = 0; ik > -1; ik = ik + x) { int d = (16-i/16)^2; // calc inverse kwadraat van index pwmWrite (1, i); vertraging (d); als (i == 255) x = -1; // van richting veranderen op piek } } }

Aanbevolen: