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 readyPak 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 = 401 × Y = 120Jistě 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 "
}
}
}