<- Návrat na předchozí stranu – Instalace Linuxu
Pokračovat teď budeme nastavením samotného testovacího souboru. K tomuto účelu použijeme editor textových souborů ” nano ” , který podporuje barevné rozlišování. Stačí napsat ” nano nazev.souboru “, tak se vám otevře soubor připravený k editaci. Uložit změny lze současným stiskem kláves ” CTRL + O ” a potvrdit zápis souboru. Práci v editoru ukončíte stiskem ” CTRL + X “. Otevřeme tedy soubor a budeme editovat počet našich LED k ovládání – ” nano strandtest.py ” a v souboru najdeme následující řádky
1 2 3 4 5 |
LED_COUNT = 150 # počet ovládaných LED LED_PIN = 18 # GPIO pin kde bude připojen LED pásek (musí podporovat PWM) LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz) LED_DMA = 5 # DMA channel to use for generating signal (try 5) LED_INVERT = False # True invertuje výstup, to se hodí při konverzi napětí pomocí NPN tranzistoru |
Pro nás je použitelný pouze první řádek, kde je nutné zapsat počet ovládaných LED. To je také jediné, co před testem musíme udělat, nyní můžeme spustit ukázkový soubor ” strandtest.py “. Protože jsme přihlášeni jako uživatel, musíme zajistit spuštění souboru s větším oprávněním, tedy ideálně jako ” root “. K tomuto účelu slouží příkaz ” sudo “, který už jsme používali v předchozích příkazech.
1 |
sudo python strandtest.py |
Zastavení spuštěného programu zajistíte společným stiskem kláves ” ctrl + c ” , jen mějte na paměti, že LED vám zůstanou svítit ve stavu před přerušením. K rychlému zhasnutí můžete vytvořit soubor ” stop.py “, a to tímto příkazem ” nano stop.py ” a vložením následujících řádků.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#!/usr/bin/env python import time import random from neopixel import * # LED strip configuration: LED_COUNT = 150 # Number of LED pixels. LED_PIN = 18 # GPIO pin connected to the pixels (must support PWM!). LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz) LED_DMA = 5 # DMA channel to use for generating signal (try 5) LED_INVERT = False # True to invert the signal (when using NPN transistor level shift) # Define functions which animate LEDs in various ways. def ledOff(strip): """All LED off.""" for i in range(strip.numPixels()): strip.setPixelColor(i, 0) #time.sleep(0.01) strip.show() if __name__ == '__main__': # Create NeoPixel object with appropriate configuration. strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT) # Intialize the library (must be called once before other functions). strip.begin() ledOff(strip) |
Kdo nechce prográmek pro zhasnutí spouštět ručně, může si vytvořit jednoduchý skript, který po ukončení programu řídícího LED pásek, sám odešle program pro zhasnutí. Můžeme ho nazvat třeba ” LedOn.sh “, už známe jak ” nano LedOn.sh ” a vložíme následující příkazy.
1 2 3 4 5 6 7 |
#!/bin/bash # Skrip pro zapnuti LED efektu, ktery po ukonceni zhasne LED pasek python /home/pi/strandtest.py sleep 1 python /home/pi/stop.py echo "Stop, LED off" |
A ještě musíme zajistit atribut spuštění. K tomuto účelu použijeme následující příkaz ” sudo chmod a+x LedOn.sh “. Testování pak pustíme pomocí našeho skriptu ” sudo LedOn.sh “.
Ukázkový program je napsán v Pythonu. Python je interpretovaný, interaktivní a objektově orientovaný programovací jazyk. Často je srovnáván s Tcl, Perl, Scheme nebo Javou. Nezvyklou zajímavostí je, že struktura programu se řídí odsazováním příkazů, místo používání závorek jako třeba v C. Kdo se bude cítit na vyzkoušení si programování vlastních efektů, bude využívat připravené funkce a některé si v rychlosti popíšeme, celkový popis najdete na už zmíněné stránce Adafruit.com.
setPixelColor(strip, n, color) > n – udává pozici LED a color 24 bit hodnotu barvy.
setPixelColorRGB(strip, n, red, green, blue) > n – udává pozici LED a následují barvy v desítkové soustavě v rozmezí 0-255.
numPixels(strip) > vrací počet zapojených LED
getPixelColor(strip, n) > n – udává pozici LED a bude vám vrácena 24bit hodnota barvy zvolené pozice
show(strip) > zobrazí změny na LED pásku, ostatní příkazy jsou jinak prováděny na pozadí a budou provedeny až po vyvolání této funkce
Color(red, green, blue) > konvertuje barvy v des. soustavě (rozsah 0-255) na 24bit, příklad: setPixelColor(strip, n, Color(255, 0, 0))
setBrightness(strip, brightness) > brightness udává jas v rozsahu 0-255
Většina funkcí je jednoznačných, jen u poslední funkce setBrightness dochází ke změně hodnot, tedy ovlivňuje to i barevnost.
Na konec přikládám i rozšířený zkušební soubor pod názvem vanoce.py, kde je několik dalších ukázek různých efektů. Pokud by se chtěl někdo podělit i o své vytvořené efekty, rád je do článku přidám, stačí je poslat na e-mail dccmm.elektromm(za.vi.nač)seznam.cz
————————————————————————————————————————————————-
Soubory ke stažení:
————————————————————————————————————————————————-
______________________________________________________________________________________
______________________________________________________________________________________