Tento workshop nejde projít jen tak z domu – je potřeba speciální příprava. Pokyny pro organizátory najdeš na podstránce.
Vítej na workshopu MicroPythonu! Dnes si ukážeme, jak programovat – jak říkat počítači, co má dělat. Aktivita je určena lidem, kteří nikdy předtím neprogramovali.
K programování použijeme programovací jazyk. To je způsob, jak počítačům zadávat příkazy – jazyk, kterému rozumí jak počítače, tak lidé (programátoři).
Konkrétně dnes použijeme MicroPython – variantu jazyka Python přizpůsobenou na ovládání malých zařízení.
Laptop použijeme vlastně jen kvůli klávesnici a monitoru; všechno zajímavé se bude dít na té malé destičce, kterou vidíš vedle sebe a ze které vede spousta drátů. (Pro úplnost: je to deska NodeMCU s mikroprocesorem ESP8266.)
Dost povídání, pojďme na to!
Klikni na Activities; potom vyber z levého panelu Terminal (ikonka černého okýnka).
Objeví se příkazová řádka – černé okýnko s bílým textem, kam můžeš zadávat příkazy.
V příkazové řádce by měl být řádek končící dolarem. Za ten dolar napiš:
picocom -b 115200 /dev/ttyUSB0
Opisuj opatrně, každé písmenko má smysl! Pak zmáčkni Enter. Měl by se objevit následující výpis:
picocom v1.7
port is : /dev/ttyUSB0
flowcontrol : none
baudrate is : 115200
parity is : none
databits are : 8
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv
imap is :
omap is :
emap is : crcrlf,delbs,
Terminal ready
Pak stiskni Enter. Měly by se objevit tři zobáčky, kterými MicroPython prosí o instrukce:
>>>
Za tři zobáčky můžeš zadat nějaký matematický příklad. MicroPython ho spočítá. Zkus třeba tyhle (zobáčky nepiš, ty vypíše sám MicroPython:
>>> 1 + 1
>>> 1 - 5
>>> 3 * 3
>>> 1 / 4
>>> (84 + 5) * 100
Poznáš co dělá hvězdička nebo lomítko?
Tipneš si, proč programátoři používají tyhle symboly, a ne třeba
3 × 3
nebo ¼
?
Věděl/a jsi, že v Americe používají desetinnou tečku místo čárky? Většina programovacích jazyků ji používá taky.
MicroPython na našich destičkách má připravený objekt led
, jehož metodou
value
jde ovládat svítící dioda.
Stačí jen zadat správné příkazy:
>>> led.value(1)
>>> led.value(0)
K destičce je připojeno i tlačítko.
Metodou btn.value()
se zeptáš, jestli je právě zmáčknuté, nebo ne.
>>> btn.value()
Zkus tenhle příkaz zadat, zatímco tlačítko držíš.
Informace o tom, jestli je tlačítko zmáčknuté – btn.value()
– je číslo:
buď 0, nebo 1.
Výraz btn.value()
můžeš použít kdekoliv, kde se objevuje číslo
0, nebo 1 – třeba pro rozsvícení nebo zhasnutí diody:
>>> led.value(btn.value())
Existuje způsob, jak nechat MicroPython něco opakovat stále dokola:
takzvaný nekonečný cyklus.
Na jeden řádek napiš while True:
(s velkým T a dvojtečkou na konci)
a potom tělo cyklu – příkaz, který se má provést.
MicroPython tělo cyklu automaticky odsadí – přidá na začátek řádku
mezery. Ty mezery nemaž.
Nakonec několikrát stiskni Enter, dokud se program nespustí.
>>> while True:
... led.value(btn.value())
...
...
Nekonečný cyklus se opakuje donekonečna. Je ale způsob jak ho přerušit, až tě omrzí: zmáčkni Ctrl+C.
Další objekt, který můžeš použít, je servo
.
Ten ovládá servomotor, který můžeš nastavit na konkrétní úhel. Třeba:
>>> servo.duty(120)
>>> servo.duty(40)
... nebo něco mezi tím.
Nepoužívej prosím čísla menší než 40 nebo větší než 120, motorek se tím může ničit.
Před chvílí jsme si ukázali tento kód:
>>> led.value(btn.value())
Hodnota btn.value()
může být buď 1, nebo 0.
Pojďme ji použít pro motorek: chceme, aby se natočil buď na 40 nebo na
120, podle toho, jestli je tlačítko zmáčknuté.
Na to, abys z 0 nebo 1 udělal/a 40 nebo 120, je potřeba znát trochu matematiky:
0
× Y = 40
1
× Y = 120
Jistě zvládneš vypočítat, že X = 40 a Y = 80. Tyhle hodnoty doplnit do kódu:
>>> servo.duty(40 + btn.value() * 80)
Změníš program tak, aby se natáčel na 50
nebo 90
?
Dokážeš výsledek dát do cyklu, aby program na zmáčknutí či puštění tlačítka reagoval automaticky?
Poslední věc připojená k destičce je LED pásek s několika světýlky. Každé z nich se dá nastavit na nějakou barvu. Zkus si to:
>>> strip[0] = RED
>>> strip[1] = GREEN
>>> strip[2] = BLUE
>>> strip.write()
První tři příkazy připravují jednotlivé barvy a poslední všechno připravené
pošle do LED pásku.
Až budeš experimentovat, nezapomeň na strip.write()
– bez toho
se barvy neukážou.
Teď si přestaneme jen tak hrát a začneme psát program.
Spusť editor: Klikni na Activities; potom vyber z levého panelu Text Editor (ikonka zápisníku s tužkou).
Objeví se bílé okýnko, do kterého napiš:
strip[0] = WHITE
strip[1] = OFF
strip[2] = OFF
strip.write()
Soubor ulož (Save) pod jménem main.py
.
Potom se vrať k příkazové řádce a ukonči picocom
:
stiskni Ctrl+A a pak Ctrl+Q.
Měl by se objevit řádek končící dolarem.
Za dolar napiš:
ampy -p /dev/ttyUSB0 run main.py
... a stiskni Enter. Tento příkaz soubor s programem do zařízení nahraje a rovnou spustí.
Zkus v editoru nastavit jiné barvy a program znovu uložit (Ctrl+S).
Potom v příkazové řádce zmáčkni šipku nahoru ↑.
Tím se vrátíš k předchozímu příkazu (ampy
) a můžeš znovu stisknout
Enter a program spustit.
Tady je program, který rozbliká LED pásek.
Ukazuje větší cyklus, a navíc funkci sleep
, která MicroPython na chvíli
zdrží: sleep(1/4)
čeká čtvrtinu sekundy.
Při přepisování dávej pozor na odsazení – řádky vevnitř v cyklu musí být všechny odsazené o čtyři mezery.
strip[0] = OFF
strip[1] = OFF
strip[2] = OFF
while True:
strip[0] = RED
strip[1] = OFF
strip.write()
sleep(1/4)
strip[0] = OFF
strip[1] = RED
strip.write()
sleep(1/4)
Dokážeš naprogramovat semafor?
Se závorou?
Cykly nemusí být jen nekonečné. Tady je cyklus, který čeká dokud není stisknuté tlačítko.
Potom se rozsvítí světlo – všimni si, že příkaz led.value(1)
už není
odsazený. Není součást cyklu.
led.value(0)
while btn.value():
sleep(1/100)
led.value(1)
Polož na tlačítko nějaký těžší předmět (třeba myš) tak, aby bylo zmáčknuté. Když někdo předmět vezme, tlačítko přestane být zmáčknuté.
Napiš program, který na to bude čekat a jakmile někdo myš ukradne, LED pásek začne zuřivě blikat.
Tím dnešní krátká exkurze do světa MicroPythonu končí. Jestli tě programování zaujalo a chceš v něm pokračovat, dej nám vědět!
Nebo pak z klidu domova napiš Petrovi na pviktori@redhat.com.
{ "data": { "sessionMaterial": { "id": "session-material:2017/rh-openschool-micropython:workshop:0", "title": "Workshop MicroPythonu", "html": "\n \n \n\n <div class=\"admonition note\"><p>Tento workshop nejde projít jen tak z domu – je potřeba speciální příprava.\nPokyny pro organizátory najdeš\nna <a href=\"/2017/rh-openschool-micropython/micropython/mini-workshop/organizers/\">podstránce</a>.</p>\n</div><p>Vítej na workshopu MicroPythonu!\nDnes si ukážeme, jak programovat – jak říkat počítači, co má dělat.\nAktivita je určena lidem, kteří nikdy předtím neprogramovali.</p>\n<p>K programování použijeme <em>programovací jazyk</em>.\nTo je způsob, jak počítačům zadávat příkazy – jazyk, kterému\nrozumí jak počítače, tak lidé (programátoři).</p>\n<p>Konkrétně dnes použijeme MicroPython – variantu jazyka Python přizpůsobenou na\novládání malých zařízení.</p>\n<p>Laptop použijeme vlastně jen kvůli klávesnici a monitoru; všechno zajímavé\nse bude dít na té malé destičce, kterou vidíš vedle sebe a ze které vede\nspousta drátů.\n(Pro úplnost: je to deska <em>NodeMCU</em> s mikroprocesorem <em>ESP8266</em>.)</p>\n<p>Dost povídání, pojďme na to!</p>\n<h2>Otevření příkazové řádky</h2>\n<p><img src=\"/2017/rh-openschool-micropython/micropython/mini-workshop/static/icon_terminal.png\" style=\"float:right;height:5em;\"></p>\n<p>Klikni na <em>Activities</em>; potom vyber z levého panelu <em>Terminal</em> (ikonka\nčerného okýnka).</p>\n<p>Objeví se <em>příkazová řádka</em> – černé okýnko s bílým textem,\nkam můžeš zadávat příkazy.</p>\n<h2>Otevření komunikačního kanálu</h2>\n<p>V příkazové řádce by měl být řádek končící dolarem.\nZa ten dolar napiš:</p>\n<div class=\"highlight\"><pre><span></span>picocom -b <span class=\"m\">115200</span> /dev/ttyUSB0\n</pre></div><p>Opisuj opatrně, každé písmenko má smysl!\nPak zmáčkni Enter.\nMěl by se objevit následující výpis:</p>\n<div class=\"highlight\"><pre><code>picocom v1.7\n\nport is : /dev/ttyUSB0\nflowcontrol : none\nbaudrate is : 115200\nparity is : none\ndatabits are : 8\nescape is : C-a\nlocal echo is : no\nnoinit is : no\nnoreset is : no\nnolock is : no\nsend_cmd is : sz -vv\nreceive_cmd is : rz -vv\nimap is : \nomap is : \nemap is : crcrlf,delbs,\n\nTerminal ready</code></pre></div><p>Pak stiskni Enter.\nMěly by se objevit tři zobáčky, kterými MicroPython prosí o instrukce:</p>\n<div class=\"highlight\"><pre><code>>>></code></pre></div><div style=\"page-break-after: always;\"></div><h2>Kalkulačka</h2>\n<p>Za tři zobáčky můžeš zadat nějaký matematický příklad. MicroPython ho spočítá.\nZkus třeba tyhle (zobáčky nepiš, ty vypíše sám MicroPython:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"mi\">1</span> <span class=\"o\">+</span> <span class=\"mi\">1</span>\n\n<span class=\"gp\">>>> </span><span class=\"mi\">1</span> <span class=\"o\">-</span> <span class=\"mi\">5</span>\n\n<span class=\"gp\">>>> </span><span class=\"mi\">3</span> <span class=\"o\">*</span> <span class=\"mi\">3</span>\n\n<span class=\"gp\">>>> </span><span class=\"mi\">1</span> <span class=\"o\">/</span> <span class=\"mi\">4</span>\n\n<span class=\"gp\">>>> </span><span class=\"p\">(</span><span class=\"mi\">84</span> <span class=\"o\">+</span> <span class=\"mi\">5</span><span class=\"p\">)</span> <span class=\"o\">*</span> <span class=\"mi\">100</span>\n</pre></div><p>Poznáš co dělá hvězdička nebo lomítko?\nTipneš si, proč programátoři používají tyhle symboly, a ne třeba\n<code>3 × 3</code> nebo <code>¼</code>?</p>\n<p>Věděl/a jsi, že v Americe používají desetinnou tečku místo čárky?\nVětšina programovacích jazyků ji používá taky.</p>\n<h2>Světýlko</h2>\n<p>MicroPython na našich destičkách má připravený objekt <code>led</code>, jehož metodou\n<code>value</code> jde ovládat svítící dioda.\nStačí jen zadat správné příkazy:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">led</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">>>> </span><span class=\"n\">led</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n</pre></div><h2>Tlačítko</h2>\n<p>K destičce je připojeno i tlačítko.\nMetodou <code>btn.value()</code> se zeptáš, jestli je právě zmáčknuté, nebo ne.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">btn</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">()</span>\n</pre></div><p>Zkus tenhle příkaz zadat, zatímco tlačítko držíš.</p>\n<h2>Výrazy</h2>\n<p>Informace o tom, jestli je tlačítko zmáčknuté – <code>btn.value()</code> – je číslo:\nbuď 0, nebo 1.\nVýraz <code>btn.value()</code> můžeš použít kdekoliv, kde se objevuje číslo\n0, nebo 1 – třeba pro rozsvícení nebo zhasnutí diody:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">led</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">(</span><span class=\"n\">btn</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">())</span>\n</pre></div><h2>Cyklus</h2>\n<p>Existuje způsob, jak nechat MicroPython něco opakovat stále dokola:\ntakzvaný <em>nekonečný cyklus</em>.\nNa jeden řádek napiš <code>while True:</code> (s velkým T a dvojtečkou na konci)\na potom <em>tělo cyklu</em> – příkaz, který se má provést.\nMicroPython tělo cyklu automaticky <em>odsadí</em> – přidá na začátek řádku\nmezery. Ty mezery nemaž.</p>\n<p>Nakonec několikrát stiskni Enter, dokud se program nespustí.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"k\">while</span> <span class=\"bp\">True</span><span class=\"p\">:</span>\n<span class=\"gp\">... </span> <span class=\"n\">led</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">(</span><span class=\"n\">btn</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">())</span>\n<span class=\"gp\">...\n</span><span class=\"gp\">...\n</span></pre></div><p>Nekonečný cyklus se opakuje donekonečna.\nJe ale způsob jak ho přerušit, až tě omrzí: zmáčkni\n<kbd>Ctrl</kbd>+<kbd>C</kbd>.</p>\n<div style=\"page-break-after: always;\"></div><h2>Motorek</h2>\n<p>Další objekt, který můžeš použít, je <code>servo</code>.\nTen ovládá servomotor, který můžeš nastavit na konkrétní úhel. Třeba:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">servo</span><span class=\"o\">.</span><span class=\"n\">duty</span><span class=\"p\">(</span><span class=\"mi\">120</span><span class=\"p\">)</span>\n<span class=\"gp\">>>> </span><span class=\"n\">servo</span><span class=\"o\">.</span><span class=\"n\">duty</span><span class=\"p\">(</span><span class=\"mi\">40</span><span class=\"p\">)</span>\n</pre></div><p>... nebo něco mezi tím.</p>\n<p>Nepoužívej prosím čísla menší než 40 nebo větší než 120, motorek se tím může\nničit.</p>\n<h2>Matematika</h2>\n<p>Před chvílí jsme si ukázali tento kód:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">led</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">(</span><span class=\"n\">btn</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">())</span>\n</pre></div><p>Hodnota <code>btn.value()</code> může být buď 1, nebo 0.\nPojďme ji použít pro motorek: chceme, aby se natočil buď na 40 nebo na\n120, podle toho, jestli je tlačítko zmáčknuté.</p>\n<p>Na to, abys z 0 nebo 1 udělal/a 40 nebo 120, je potřeba znát\ntrochu matematiky:</p>\n<ul>\n<li><var>X</var> + <code>0</code> × <var>Y</var> = <code>40</code></li>\n<li><var>X</var> + <code>1</code> × <var>Y</var> = <code>120</code></li>\n</ul>\n<p>Jistě zvládneš vypočítat, že <var>X</var> = 40 a <var>Y</var> = 80.\nTyhle hodnoty doplnit do kódu:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">servo</span><span class=\"o\">.</span><span class=\"n\">duty</span><span class=\"p\">(</span><span class=\"mi\">40</span> <span class=\"o\">+</span> <span class=\"n\">btn</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">()</span> <span class=\"o\">*</span> <span class=\"mi\">80</span><span class=\"p\">)</span>\n</pre></div><p>Změníš program tak, aby se natáčel na <code>50</code> nebo <code>90</code>?</p>\n<p>Dokážeš výsledek dát do cyklu, aby program na zmáčknutí či puštění tlačítka\nreagoval automaticky?</p>\n<h2>Barvy</h2>\n<p>Poslední věc připojená k destičce je LED pásek s <em>několika</em> světýlky.\nKaždé z nich se dá nastavit na nějakou barvu.\nZkus si to:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">RED</span>\n<span class=\"gp\">>>> </span><span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">GREEN</span>\n<span class=\"gp\">>>> </span><span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">2</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">BLUE</span>\n<span class=\"gp\">>>> </span><span class=\"n\">strip</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">()</span>\n</pre></div><p>První tři příkazy připravují jednotlivé barvy a poslední všechno připravené\npošle do LED pásku.\nAž budeš experimentovat, nezapomeň na <code>strip.write()</code> – bez toho\nse barvy neukážou.</p>\n<div style=\"page-break-after: always;\"></div><h2>Program</h2>\n<p><img src=\"/2017/rh-openschool-micropython/micropython/mini-workshop/static/icon_gedit.png\" style=\"float:right;height:5em;\"></p>\n<p>Teď si přestaneme jen tak hrát a začneme psát program.</p>\n<p>Spusť <em>editor</em>: Klikni na <em>Activities</em>; potom vyber z levého panelu\n<em>Text Editor</em> (ikonka zápisníku s tužkou).</p>\n<p>Objeví se bílé okýnko, do kterého napiš:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">WHITE</span>\n<span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">OFF</span>\n<span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">2</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">OFF</span>\n<span class=\"n\">strip</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">()</span>\n</pre></div><p>Soubor ulož (<em>Save</em>) pod jménem <code>main.py</code>.</p>\n<p>Potom se vrať k příkazové řádce a ukonči <code>picocom</code>:\nstiskni <kbd>Ctrl</kbd>+<kbd>A</kbd> a pak <kbd>Ctrl</kbd>+<kbd>Q</kbd>.\nMěl by se objevit řádek končící dolarem.</p>\n<p>Za dolar napiš:</p>\n<div class=\"highlight\"><pre><span></span>ampy -p /dev/ttyUSB0 run main.py\n</pre></div><p>... a stiskni <kbd>Enter</kbd>.\nTento příkaz soubor s programem do zařízení nahraje a rovnou spustí.</p>\n<p>Zkus v editoru nastavit jiné barvy a program znovu uložit\n(<kbd>Ctrl</kbd>+<kbd>S</kbd>).</p>\n<p>Potom v příkazové řádce zmáčkni <em>šipku nahoru</em> <kbd>↑</kbd>.\nTím se vrátíš k předchozímu příkazu (<code>ampy</code>) a můžeš znovu stisknout\n<kbd>Enter</kbd> a program spustit.</p>\n<h2>Blikání</h2>\n<p>Tady je program, který rozbliká LED pásek.\nUkazuje větší cyklus, a navíc funkci <code>sleep</code>, která MicroPython na chvíli\nzdrží: <code>sleep(1/4)</code> čeká čtvrtinu sekundy.</p>\n<p>Při přepisování dávej pozor na odsazení – řádky vevnitř v cyklu musí být\nvšechny odsazené o čtyři mezery.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">OFF</span>\n<span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">OFF</span>\n<span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">2</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">OFF</span>\n\n<span class=\"k\">while</span> <span class=\"bp\">True</span><span class=\"p\">:</span>\n <span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">RED</span>\n <span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">OFF</span>\n <span class=\"n\">strip</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">()</span>\n <span class=\"n\">sleep</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"o\">/</span><span class=\"mi\">4</span><span class=\"p\">)</span>\n\n <span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">OFF</span>\n <span class=\"n\">strip</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">RED</span>\n <span class=\"n\">strip</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">()</span>\n <span class=\"n\">sleep</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"o\">/</span><span class=\"mi\">4</span><span class=\"p\">)</span>\n</pre></div><h2>Semafor</h2>\n<p><img src=\"/2017/rh-openschool-micropython/micropython/mini-workshop/static/semafor.gif\" style=\"float:right;height:5em;\"></p>\n<p>Dokážeš naprogramovat semafor?</p>\n<p>Se závorou?</p>\n<h2>Cyklus s podmínkou</h2>\n<p>Cykly nemusí být jen nekonečné.\nTady je cyklus, který čeká dokud není stisknuté tlačítko.</p>\n<p>Potom se rozsvítí světlo – všimni si, že příkaz <code>led.value(1)</code> už není\nodsazený. Není součást cyklu.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"n\">led</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n\n<span class=\"k\">while</span> <span class=\"n\">btn</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">():</span>\n <span class=\"n\">sleep</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"o\">/</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n\n<span class=\"n\">led</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n</pre></div><h2>Alarm</h2>\n<p>Polož na tlačítko nějaký těžší předmět (třeba myš) tak, aby bylo zmáčknuté.\nKdyž někdo předmět vezme, tlačítko přestane být zmáčknuté.</p>\n<p>Napiš program, který na to bude čekat a jakmile někdo myš ukradne,\nLED pásek začne zuřivě blikat.</p>\n<h2>Konec?</h2>\n<p>Tím dnešní krátká exkurze do světa MicroPythonu končí.\nJestli tě programování zaujalo a chceš v něm pokračovat, dej nám vědět!</p>\n<p>Nebo pak z klidu domova napiš Petrovi na pviktori@redhat.com.</p>\n\n\n " } } }