Tento týden pokračujeme se základy programování na Raspberry Pi v jazyce Python. Minulý týden jste si mohli vyzkoušet, jak dálkově ovládat Raspberry přes síť a blikat připojenou LED diodou. Dnes navážeme čtením vstupního pinu s připojeným tlačítkem, pomocí kterého si zapneme LED diodu.
Pokud jste četli minulý návod, tak víte, že jsme si zkoušeli napsat program v Pythonu, přičemž pro psaní a spouštění jsme využili prostředí Python 3 (IDLE). Dnes v něm budeme pokračovat, kdy pro účely práce s tlačítkem jsem upravil program s blikáním LED diody. Nyní tedy budete schopni ovládat LED diodu pomocí tlačítka, které ji při stisku zapne.
Nejprve ale k zapojení tlačítka. Pro obyčejné zapojení se běžně používá tlačítko společně s odporem, který je zapojen jako pull-up či pull-down (odpor na napájecí napětí či zem pro přivedení klidové hodnoty). My ale můžeme využít toho, že u Raspberry Pi má většina pinů možnost využít vestavěného připojení obou odporů. A tím nám bude stačit zapojit tlačítko pouze jedním pinem na pin 3V3 a druhým na datový pin, kdy já jsem vybral pin GPIO 20, který je vedle pinu s LED diodou.
Nyní se můžeme podívat na upravený program. Na jeho začátku je opět připojení modulu s prací s GPIO a časem a níže jsou uvedeny čísla pinů pro LED diodu a tlačítko. Definice podprogramu setup obsahuje první dva řádky stejné z minulého příkladu pro LED, tedy nastavení číslování BCM a pinu s LED diodou jako výstupu. Na třetím řádku je pak přidané nastavení pinu s tlačítkem jako vstupu společně s nastavením připojeného pull-down odporu (PUD_DOWN, pull-up se nastaví pomocí PUD_UP). Podprogram blink obsahuje opět nekonečnou smyčku „while True“. Na jejím začátku je uveden příkaz s načtením stavu tlačítka do proměnné, která je následně testována na její stav. Pokud je tedy její stav logická jednička (logická hodnota True), tak nastavíme na GPIO pin s LED diodou napájecí napětí (HIGH) a tím rozsvítíme LED diodou. Pokud by ale tlačítko stisknuto nebylo, provedeme vypnutí LED diody. Jako poslední definici vidíme opět ukončovací podprogram, který vypne LED diodu a uvolní všechny GPIO porty. A na konci programu zůstává nezměněný popis celého běhu, kdy nejprve vykonáme podprogram setup a poté zahájíme podprogram blink. Pokud je ale tento přerušen, vykonáme podprogram „ukonci“.
# Pripojeni modulu pro praci s GPIO piny
import RPi.GPIO as GPIO
# Pripojeni modulu pro praci s casem
import time
LedPin = 21 # Cislo LED pinu
TlacitkoPin = 20 # Cislo pinu tlacitka
def setup(): # Podprogramu setup, provede se na zacatku
GPIO.setmode(GPIO.BCM) # Cislovani pinu - BCM nebo BOARD
GPIO.setup(LedPin, GPIO.OUT) # Nastaveni pinu LED jako vystupu
# Nastaveni pinu s tlacitkem jako vstupu s pull-down odporem
GPIO.setup(TlacitkoPin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
def blink(): # Podprogram blink, ktery se bude vykonavat
while True: # Nekonecna smycka, jako loop u Arduina
stavTlacitka = GPIO.input(TlacitkoPin) # Nactenu stavu tlacitka do promenne
# Kontrola stavu tlacitka
if (stavTlacitka == True):
GPIO.output(LedPin, GPIO.HIGH) # Zapnuti LED diody pomoci prikazu GPIO.HIGH
else:
GPIO.output(LedPin, GPIO.LOW) # Vypnuti LED diody pomoci prikazu GPIO.LOW
def ukonci(): # Podprogram, ktery bude zavolan pri ukonceni programu
GPIO.output(LedPin, GPIO.LOW) # Vypnuti LED diody
GPIO.cleanup() # Uvolneni vsech GPIO portu pro dalsi pouziti
if __name__ == '__main__': # Program zacina ZDE
setup() # Zavolani podprogramu setup
try: # Zavolani podrogramu blink s osetrenim vyjimky nize
blink()
except KeyboardInterrupt: # Pri stisku zkratky 'Ctrl+C' se vykona podprogram ukonci
ukonci()
Po nakopírování uvedeného programu do souboru Tlacitko.py ho uložíme a můžeme přejít ke spuštění. To můžete udělat buď pomocí tlačítka F5 nebo zavoláním v nabídce „Run-Run Module“. Nyní můžete vidět v konzoli Python Shell informaci o restartu skriptu Tlacitko.py a pro otestování můžete rozsvítit LED diodu pomocí stisku tlačítka. A také si můžete vyzkoušet, že když v konzoli Python Shell stisknete klávesovou zkratku Ctrl+C, blikání se ukončí. Případně lze ukončení vyvolat v nabídce „Shell-Interrupt Execution“.
Nyní jsme si ukázali, jak ovládat nejen výstup z GPIO pinů, ale také vstup. V dalších návodech si ukážeme jak pracovat se sběrnicí I2C a SPI a díky tomu ovládat různé senzory, displeje a další rozšiřovací moduly.
Motorizovaný kulový ventil. Má široké uplatnění v různých průmyslových a obytných instalacích. Může být integrován do automatických systémů řízení, kde je možné ovládat průtok dálkově nebo automatizovaně podle předem nastavených podmínek.
Motorizované kulové vently s obvodem CR01, CR02, CR03 nebo CR04 je poměrně jednoduché po elektrické stránce správně zapojit. U ventilu s obvodem CR05 je tomu ale trochu jinak - ventil si sám nehlídá krajní polohy otevření, nebo zavření. Z toho důvodu vznikl tento článek, ukazující některé výhody, použití a především správné zapojení ventilu s obvodem CR05.