20.03.2017 Views

Raspberry Pi - Uživatelská příručka

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!