Obsah:

RaspberryPi: Fade LED in and out: 4 Steps (with Pictures)
RaspberryPi: Fade LED in and out: 4 Steps (with Pictures)

Video: RaspberryPi: Fade LED in and out: 4 Steps (with Pictures)

Video: RaspberryPi: Fade LED in and out: 4 Steps (with Pictures)
Video: 05 PWM programming with Raspberry Pi and Python Led Fade 2024, Prosinec
Anonim
RaspberryPi: Ztlumení a zhasnutí LED
RaspberryPi: Ztlumení a zhasnutí LED

Následující kroky jsou experimenty, které ilustrují, jak LED diody fungují. Ukazují, jak stmívat LED rovnoměrně a jak ji zeslabovat.

Budete potřebovat:

  • RaspberryPi (použil jsem starší Pi, používá se můj Pi-3, ale jakýkoli Pi bude fungovat.)
  • Prkénko
  • 5 mm červená LED
  • Rezistor 330 Ω (není rozhodující, 220–560 Ω bude fungovat.)
  • Propojovací drát

Pi-cobbler, který jsem použil od Adafruit, není nutný, ale usnadňuje chleba.

WiringPi je sada knihoven pro programování RaspberryPi v C. Pokyny pro stahování, instalaci a použití najdete na adrese

Při instalaci kabeláže postupujte podle pokynů na této stránce:

Chcete -li získat seznam čísel pinů wiringPi, zadejte na příkazovém řádku gpio readall.

V novějších verzích Raspian je wiringPi nainstalován ve výchozím nastavení.

Krok 1: Modulace šířky pulsu

Modulace šířky pulsu
Modulace šířky pulsu
Modulace šířky pulsu
Modulace šířky pulsu
Modulace šířky pulsu
Modulace šířky pulsu

LED diody vždy běží na stejném napětí bez ohledu na jas. Jas je určen oscilátorem čtvercových vln a doba, po kterou je napětí vysoké, určuje jas. Toto se nazývá PWM (Pulse Width Modulation). Toto je řízeno funkcí wiringPi pwmWrite (pin, n), kde n má hodnotu od 0 do 255. Pokud n = 2, LED bude dvakrát jasnější než n = 1. Jas se vždy zdvojnásobí, když n zdvojnásobí. Takže n = 255 bude dvakrát jasnější než n = 128.

Hodnota n je často vyjádřena v procentech nazývaných pracovní cyklus. Obrázky ukazují stopy osciloskopu pro pracovní cykly 25, 50 a 75%.

Krok 2: LED a odpor

LED a odpor
LED a odpor

Není to nutné, ale mít několik z nich po ruce může hodně přispět na chleba.

Pájejte odpor na krátkou LED diodu. Použijte odpor 220-560 Ohm.

Krok 3: Rovnoměrné stmívání

Rovnoměrné stmívání
Rovnoměrné stmívání

Sestavte obvod jako na schématu. Je to jako obvod blikající LED. Používá pin 1 wiringPi, protože potřebujete použít pin s povoleným PWM. Zkompilujte program a spusťte jej. Všimnete si, že čím jasnější je LED, tím pomaleji stmívá. Jak se blíží nejtmavší, bude velmi rychle stmívat.

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

* Compile: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade1.c -lwiringPi * * Execute: sudo./fade1 * * All PIN numbers are wiringPi numbers if otherwise specified. ******************************************************* ****************/ #include int main () {wiringPiSetup (); // Nastavení požadované wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Režim Mark/Space int i; while (1) {for (i = 255; i> -1; i--) {pwmWrite (1, i); zpoždění (10); } pro (i = 0; i <256; i ++) {pwmWrite (1, i); zpoždění (10); }}}

Následující krok ukazuje, jak ztlumit LED konstantní rychlostí a v jednom příkazu.

Krok 4: Krok 4: Nahoru a dolů v jednom pro () a rovnoměrně

Aby LED dioda ztlumila konstantní rychlostí, musí se zpoždění () zvyšovat exponenciální rychlostí, protože polovina pracovního cyklu vždy vytvoří polovinu jasu.

Linie:

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

vypočítá inverzní čtverec jasu k určení délky zpoždění. Zkompilujte a spusťte tento program a uvidíte, že LED bude blednout a zhasínat konstantní rychlostí.

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

* Compile: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade2.c -lwiringPi * * Execute: sudo./fade2 * * All PIN numbers are wiringPi numbers if otherwise specified. ******************************************************* ****************/ #include int main () {wiringPiSetup (); // Nastavení požadované wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Režim Mark/Space while (1) {int i; int x = 1; pro (i = 0; i> -1; i = i + x) {int d = (16 -i/16)^2; // vypočítat inverzní čtverec indexu pwmWrite (1, i); zpoždění (d); if (i == 255) x = -1; // přepnutí směru na špičce}}}

Doporučuje: