Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ČÁST III Programování a hackování<br />
import R<strong>Pi</strong>.GPIO as GPIO<br />
Knihovnu time importovat nemusíte, protože v tomto příkladu se žádné časovací instrukce<br />
nepoužívají. Můžete tedy přejít přímo na nastavení vstupního pinu 12. Přitom postupujte stejně<br />
jako v případě nastavení výstupního pinu. Změní se pouze koncová část instrukce:<br />
GPIO.setup(12, GPIO.IN)<br />
Pokud k tomuto účelu nepoužíváte pin 12, nezapomeňte v předchozím příkazu změnit číslo<br />
pinu.<br />
Stejně jako u předchozí ukázky spočívá další krok ve vytvoření nekonečné smyčky, která neustále<br />
kontroluje, zda vstupní pin přešel do nízkého stavu (jinými slovy, zda bylo tlačítko stisknuto).<br />
Začněte cyklus následujícím řádkem kódu:<br />
while True:<br />
Čtení stavu vstupního pinu je velmi podobné nastavení stavu výstupního pinu – s jednou výjimkou:<br />
než můžete výslednou hodnotu jakkoli zpracovat, musíte ji uložit do proměnné. Následující<br />
instrukce jazyka Python vytvoří novou proměnnou s názvem vstupni_hodnota (viz<br />
kapitola 11, „Úvod do jazyka Python“) a nastaví ji na aktuální hodnotu pinu 12:<br />
vstupni_hodnota = GPIO.input(12)<br />
Program by sice bylo možné ihned úspěšně spustit, ale neplnil by svou funkci. Abyste věděli,<br />
co se děje, přidejte následující instrukci print, která poskytne zpětnou vazbu:<br />
if vstupni_hodnota == False:<br />
print(„Tlacitko bylo stisknuto.“)<br />
while vstupni_hodnota == False:<br />
vstupni_hodnota = GPIO.input(12)<br />
Poslední dva řádky – druhý příkaz while a druhé přiřazení proměnné vstupni_hodnota, které<br />
tvoří tzv. vnořený cyklus – jsou velmi důležité. Dokonce i na procesoru počítače <strong>Raspberry</strong> <strong>Pi</strong>,<br />
který je oproti výkonným procesorům stolních počítačů a notebooků poměrně pomalý, funguje<br />
interpret jazyka Python velmi rychle. Tento vnořený cyklus zajistí, že jazyk Python bude<br />
neustále kontrolovat stav pinu 12, dokud nepřejde z nízkého do vysokého stavu, což znamená,<br />
že tlačítko bylo uvolněno. Bez tohoto cyklu by program opakovaně procházel cyklus, zatímco<br />
by tlačítko zůstávalo stisknuté. I kdybyste měli rychlé reflexy a tlačítko okamžitě uvolnili,<br />
zpráva by se na obrazovku vypsala mnohokrát, což by bylo matoucí.<br />
Hotový program by měl vypadat takto:<br />
import R<strong>Pi</strong>.GPIO as GPIO<br />
GPIO.setup(12, GPIO.IN)<br />
while True:<br />
vstupni_hodnota = GPIO.input(12)<br />
if vstupni_hodnota == False:<br />
print(„Tlacitko bylo stisknuto.“)<br />
while vstupni_hodnota == False:<br />
vstupni_hodnota = GPIO.input(12)<br />
190