I když pro Živě.cz a Computer připravuji seriál Pojďme programovat elektroniku už déle než čtyři roky a dnes jeho malá knihovna čítá bezmála 200 projektů, stále dokola dostávám tu stejnou otázku: Jak se mám naučit programovat?
Letos v říjnu představili britští inženýři novou verzi populární prototypovací destičky Micro:bit V2, kterou později naskladnily i české e-shopy.
Byť se Micro:bit zrodil jako pomůcka pro děti, školáky a lektory všemožných kroužků malých elektrotechniků a konstruktérů robotů, mohu všechny čtenáře ubezpečit, že je to perfektní volba i pro šedesátníka, který si chce na stará kolena naprogramovat svůj první čip.
Zadní strana Micro:bitu se všemi klíčovými čipy. Další fotografie najdete v galerii.
Jednoduchost Micro:bitu totiž nespočívá v tom, že by to snad byla hračka, která zabaví jen malé caparty a nic lepšího neumí. Právě naopak! Kouzlo drobné destičky tkví v hromadě integrovaných čidel a jejich ovládnutí přímo z webového editoru bez potřeby instalování a konfigurace jakéhokoliv komplikovaného vývojového prostředí.
Micro:bit se programuje z webového prohlížeče
Začátečník, ať už to budete vy, vaše dítě nebo třeba neteř (i holky chtějí kódovat!), který se v životě nesetkal s jedinou řádkou programového kódu, může zažít tvořit pomocí tzv. blokového programování.
Webový editor MakeCode v režimu blokového programování
Micro:bit pro tyto účely nabízí webové prostředí MakeCode od Microsoftu, ve kterém pomocí funkčních a do češtiny přeložených bloků, jež budete přetahovat z nabídky, sestavíte celé tělo programu.
Bloky jsou rozdělené do několika kategorií, a než si z nich zkusíme postavit první program, ještě se podíváme, co s nimi vlastně můžeme ovládat.
Armový čip s Bluetooth, reproduktorem, displejem i akcelerometrem
Destičku Micro:bit V2 pohání SoC čip Nordic nRF52833, v jehož nitru se skrývá:
- 64MHz procesor ARM Cortex-M4
- 128 kB RAM
- 512 kB flashové paměti
- Bluetooth 5.2
- Teploměr (jen pomocný a nepříliš přesný)
Samotný SoC pak na plošném spoji doplňuje několik čidel a výstupních zařízení, aby nemusel kutil-zelenáč připojovat k desce alespoň zpočátku cokoliv dalšího.
Takže pěkně popořadě. Na čelní straně nechybí:
- Červený maticový 5×5 LED displej s nastavením jasu (PWM)
- Indikátor spuštěného mikrofonu
- Dvě tlačítka
- Dotyková ploška ve tvaru loga projektu Micro:bit
- 3 velké plošky s I/O piny a 3V zdrojem napětí (max 190 mA)
- 19 malých plošek s I/O piny, sběrnicemi I²C, SPI, PWM a sériovou linkou
Přední strana desky Micro:bit V2
Na zadní straně desky pak vedle SoC čipu od trondheimského Nordicu najdete ještě:
- Všesměrový MEMS mikrofon SPU0410LR5H-QB-7
- Reproduktor/bzučák MLT-8530
- Kombinovaný trojosý akcelerometr/magnetometr LSM303AGR
- Tištěná 2,4GHz anténa
- Tlačítko reset
- Konektor microUSB a čip pro USB komunikaci MKL27Z256VFM4
- Konektor 3V baterie JST X2B-PH-SM4-TB
Zadní strana desky Micro:bit V2
Základní představení je za námi, a tak si pojďme konečně vytvořit první program. Po spuštění se z reproduktoru ozve stupnice tónů. Jak na to, si ukážeme v následující kapitole.
Pokračování 2 / 7
První program: po startu přehraj melodii
Jelikož je na destičce reproduktor/bzučák, pojďme si z bloků poskládat první a opravdu primitivní program, který jen po startu zahraje stupnici základních tónů jako na dětském pianu a skončí.
Tento základní blok spustí všechny vnořené bloky ihned po startu
Jednotlivé bloky představují posloupnost základních příkazů, začneme proto blokem při startu, který myší přetáhneme do hlavního okna. Dále do okna přetáhneme ze sekce Hudba blok přehraj melodii a podobně jako puzzle oba bloky zapojíme do sebe.
Do úvodního bloku jsem zacvakl blok přehrávající melodii, který má dva parametry
Blok přehraj melodii nabízí dva parametry. Prvním je krátká melodie. Buď vybereme některou z připravených, anebo si ji poskládáme v matici, která přehraje osm tónů. Druhým parametrem bloku je pak tempo, tedy rychlost přehrávání jednotlivých tónů za minutu.
Ruční vytvoření melodie na matici a galerie od tvůrců Micro:bitu
To je celé! Jelikož editor MakeCode obsahuje i simulátor našeho Micro:bitu, v levém panelu si můžeme program vyzkoušet, načež se přehraje hudební stupnice z reproduktoru velkého počítače.
Podívejte se na videoukázku našeho prvního programu:
V následující kapitole si ukážeme, jak vlastně dostat program do Micro:bitu. Můžeme použít běžný správce souborů anebo rovnou prohlížeč.
Pokračování 3 / 7
Program do Micro:bitu přetáhnete...
Když klepneme na tlačítko Stáhnout v levém dolním okraji, webový editor přeloží náš kód do strojového jazyka čipu Nordic nRF52833 a stáhne se jeho binární podoba s příponou HEX.
Stažení přeloženého programu jako souboru s příponou HEX a jeho zkopírování na diskovou jednotku Micro:bitu. Po dokončení kopírování se Micro:bit restartuje a spustí program.
Pokud připojíme Micro:bit skrze USB k počítači, měl by se ohlásit jako běžný externí disk, do kterého stačí soubor HEX zkopírovat, načež jej zavaděč čipu nainstaluje jako hlavní program, Micro:bit se automaticky restartuje, spustí se náš firmware a bzučák zapípá melodii.
Anebo nahrajete z prohlížeče pomocí WebUSB
Druhou možností je už zmíněná technologie WebUSB, tedy přístup k USB periferiím přímo z webového prohlížeče. Webové stránce nejprve udělíte právo, aby mohla komunikovat s USB zařízením na vašem počítači, a pokud propojení dopadne dobře, v tlačítku Stáhnout se zobrazí ikona USB.
Připojení Micro:bitu do webové aplikace skrze WebUSB. Po spárování se u tlačítka Stáhnout zobrazí symbol USB a po klepnutí se program nahraje rovnou do čipu.
Když tlačítko stisknete tentokrát, nestáhne se binární soubor s naším firmwarem do počítače, ale rovnou do paměti Micro:bitu. Jeho čip se poté opět automaticky restartuje a spustí se náš program. Jednodušší už to být nemůže.
Hromada začátečníků si vyláme zuby už jen na tom, že nedokáže nainstalovat a nastavit některé z obludných integrovaných vývojových prostředí a prototypovací destičku zahodí ještě dříve, než napíše byť jedinou řádku kódu.
Právě proto je Micro:bit ideálním vstupním bodem, protože se touto složitou režií okolo nemusíte vůbec zabývat. Můžete začít ihned experimentovat, i kdybyste si na to vyhradili třeba jen půlhodinku času.
Ve webovém prostředí nemusíte programy skládat pouze z bloků, ale kdykoliv se můžete přepnout na Javascript a Python. Ukážeme si to v další kapitole.
Pokračování 4 / 7
Kdykoliv můžete přepnout na JS a Python
Blokové programování má přiblížit způsob a pravidla programování naprostým začátečníkům, kteří neznají žádný klasický programovací jazyk. Ten se přitom můžete naučit i v editoru MakeCode. V horní liště stačí kdykoliv přepnout z blokového prostředí na populární Javascript a Python, načež se zobrazí zápis našich bloků pomocí jejich objektů a funkcí.
Tentýž program v Javascriptu a Pythonu
Mimochodem, MicroPython na Micro:bitu je poměrně mocný, nabízí podporu pro všechny vestavěné senzory a jeho dokumentaci najdete zde. Primitivní krokoměr (s využitím vstavěného akcelerometru) v něm napíšete rychleji než v Arduinu.
Už víme, jak to všechno funguje, a tak si pojďme v další kapitole ukázat druhý program. Tentokrát budeme stupnici tónů přehrávat stále dokola.
Pokračování 5 / 7
Druhý program: přehrávej melodii stále dokola
Náš první program je opravdu velmi hloupý. Přehraje melodii jen jednou po startu. Je to vlastně analogie systémové funkce setup() ze světa Arduino, jejíž obsah se také zpracuje jen jednou po startu čipu.
V Arduinu se po dokončení funkce setup() automaticky spustí funkce loop(), jejíž obsah se opakuje stále dokola. V případě blokového programování v MakeCode nekonečnou smyčku vytvoříme jednoduše tak, že základní blok při startu nahradíme blokem opakuj stále.
Tento základní blok opakuje vnořené bloky stále dokola
Když si nyní program spustíme v simulátoru, anebo jej rovnou nahrajeme do Micro:bitu, z reproduktoru se bude stále dokola až do zblbnutí ozývat stupnice tónů. Aby na nás nezačali bušit sousedé, pod blok přehraj melodii vložíme další klíčový základní blok čekej a nastavíme jeho parametr na 1000 ms.
V nekonečné smyčce přehrajeme naši melodii a počkáme jednu sekundu
Když nyní program spustíme, přehraje se melodie, poté čip počká 1 sekundu a celá smyčka se zopakuje. Blok čekej je tedy analogií funkce delay(1000) ze světa Arduino, anebo time.sleep(1) ze světa Pythonu.
Jak vidno, postupným objevováním dalších a dalších bloků a logiky jejich vzájemného propojování se vlastně učíme univerzální podstatu programování a studium skutečných programovacích jazyků pak bude o to snazší a hlavně intuitivnější.
Podívejte se na videoukázku našeho druhého programu:
V další kapitole si vyzkoušíme třetí program, který do hry zapojí akcelerometr. Micro:bit přehraje stupnici tónů, pokud s ním zatřepeme.
Pokračování 6 / 7
Třetí program: při zatřepání zahraj melodii
Jak už jsme si řekli výše, na desce Micro:bitu je připájený kombinovaný trojosý akcelerometr a kompas od STMicroelectronics. MakeCode na něj samozřejmě pamatuje, takže nechybí podpora jak v blokovém prostředí, tak v Javascriptu a Pythonu.
Tentokrát se naše melodie nebude přehrávat po startu a nebude se přehrávat ani v nekonečné smyčce, ale spustí se, pokud Micro:bitem zatřepeme! To je už mnohem zajímavější, viďte?
Tento základní blok se aktivuje v případě detekce pohybového gesta na akcelerometru
Nově tedy jako základ vybereme blok při zatřesení z kategorie Vstup. Blok má jako parametr výběr pohybového gesta ze surových dat akcelerometru, který měří pohybové zrychlení. Na výběr je výchozí zatřesení, ale také náhlý pohyb nahoru, dolů, náklon, pád a také míra aktuálního zrychlení.
Ještě podstatnější je to, že si vyzkoušíme další typ programování a to takové, které neprovádí nějaký kód stále dokola, ale zpracuje jej pouze v případě, že dojde k nějaké události – je tedy událostně-řízené.
Když zatřepu Micro:bitem, přehraje se melodie
U pokročilejšího programování drobných čipů se k tomu často používají asynchronní přerušení. Jedná se o speciální logický obvod, který v případě aktivace řekne procesoru, ať okamžitě všeho nechá, zpracuje náš kód, no a hned poté se vrátí k předchozí práci, kterou si uložil do paměti.
Takovým přerušením – v anglické hantýrce interruptem – může být třeba náhlá změna hodnoty čidla (třeba detektoru pohybu), stisk klávesy na klávesnici, které musí počítač zpracovat s nejvyšší prioritou, událost hardwarového časovače, který potřebuje každých pár sekund něco provést aj.
Podívejte se na videoukázku našeho třetího programu:
V poslední kapitole si ukážeme, co je to v blokovém programování funkce. Použijeme ji k přehrání úvodní pasáže koledy Tichá noc. A také do hry zapojíme maticový displej!
Pokračování 7 / 7
Čtvrtý program: při zatřepání zahraj Tichou noc
MakeCode samozřejmě nabízí hromadu dalších bloků včetně tvorby proměnných, do kterých můžeme ukládat nejrůznější hodnoty, porovnávat je a podle toho provádět další kód. S rostoucím počtem bloků nicméně začne být program docela nepřehledný, a pak nastoupí vlastní funkce, další stavební prvek většiny programovacích jazyků.
Funkce může sloužit jako chlívek, do kterého umístíme bloky, a když je budeme chtít spustit, zavoláme rovnou tuto funkci.
Blok ukaž ikonu zobrazí na maticovém bloku jeden z předpřipravených obrázků
V posledním příkladu po zatřepání destičkou nepřehrajeme hloupoučkou stupnici, ale nejprve na maticovém displeji 25 rudých LED pomocí bloku ukaž ikonu zobrazíme symbol srdíčka a hned poté spustíme naši vlastní funkci hrajKoledu.
Vytvořili jsme si vlastní funkci, která obsahuje posloupnost 12 bloků hraj tón s úryvkem první sloky slavné koledy Tichá noc
Funkce hrajKoledu bude obsahovat posloupnost 12 vestavěných bloků hraj tón, které mají dva parametry. Tím prvním je konkrétní tón, který vybereme na maličkém virtuálním klavírku, anebo rovnou zapíšeme jeho číselnou frekvenci. Druhým parametrem bude doba ve formě hudebního taktu 1/16 až 4.
Blok hraj tón má dva parametry: název/frekvenci tónu a jeho dobu
Těchto 12 tónů, které se přehrají jeden po druhém, představuje úvodní melodii vánoční skladby Tichá noc. Odpusťte mi prosím případné nepřesnosti, ale jsem hudební analfabet, který hrál naposledy před třiceti lety jako špunt na tahací harmoniku a posledních pět let se bez valného úspěchu pokouší zabrnkat na svoji elektrickou kytaru Pink Floydy.
Celý blokový program s vlastní funkcí
Díky tomu, že jsme si schovali celou sekvenci tónů do bloku vlastní funkce, můžeme ji opět jako blok umístit kamkoliv do hlavního proudu programu pomocí bloku vykonej.
Jakmile řídící čip dohraje koledu, blokem zhasni displej smažeme symbol srdíčka a program bude opět čekat, dokud akcelerometr nezachytí otřes. Mimochodem, detekci otřesu bychom mohli použít i k počítání kroků. Nebude to sice úplně přesné ale nad Micro:bitem si snadno vytvoříte prototyp vlastního pedometru!
Podívejte se na videoukázku našeho čtvrtého programu:
Pokud se nenaučíte programovat díky Micro:bitu, tak už nijak
A to je celé. Dnes jsme si ukázali, jak začít s programováním na zelené louce, bez předchozí znalosti jakéhokoliv programovacího jazyka a bez potřeby instalace a konfigurace jakéhokoliv složitého integrovaného vývojového prostředí. Pokud nedokážete nainstalovat ani Arduino IDE, začněte právě s Micro:bitem.
Když postavíte svůj první blokový diagram, který bude fungovat a provádět přesně to, co chcete, můžete se zároveň v horním panelu podívat, jak by tentýž program vypadal v Javascriptu a Pythonu, ve kterých můžete klidně pokračovat dál, jakmile narazíte na jazykový strop bloků a budete chtít vytvořit něco mnohem složitějšího.
Zdrojový kód posledního programu v Javascriptu pro Micro:bit
function hrajKoledu () {
music.playTone(784, music.beat(BeatFraction.Whole))
music.playTone(880, music.beat(BeatFraction.Double))
music.playTone(784, music.beat(BeatFraction.Whole))
music.playTone(659, music.beat(BeatFraction.Double))
music.playTone(784, music.beat(BeatFraction.Whole))
music.playTone(880, music.beat(BeatFraction.Double))
music.playTone(784, music.beat(BeatFraction.Whole))
music.playTone(659, music.beat(BeatFraction.Double))
music.playTone(587, music.beat(BeatFraction.Double))
music.playTone(494, music.beat(BeatFraction.Double))
music.playTone(523, music.beat(BeatFraction.Double))
music.playTone(392, music.beat(BeatFraction.Double))
}
input.onGesture(Gesture.Shake, function () {
basic.showIcon(IconNames.Heart)
hrajKoledu()
basic.clearScreen()
})
Zdrojový kód posledního programu v Pythonu pro Micro:bit
def hrajKoledu():
music.play_tone(784, music.beat(BeatFraction.WHOLE))
music.play_tone(880, music.beat(BeatFraction.DOUBLE))
music.play_tone(784, music.beat(BeatFraction.WHOLE))
music.play_tone(659, music.beat(BeatFraction.DOUBLE))
music.play_tone(784, music.beat(BeatFraction.WHOLE))
music.play_tone(880, music.beat(BeatFraction.DOUBLE))
music.play_tone(784, music.beat(BeatFraction.WHOLE))
music.play_tone(659, music.beat(BeatFraction.DOUBLE))
music.play_tone(587, music.beat(BeatFraction.DOUBLE))
music.play_tone(494, music.beat(BeatFraction.DOUBLE))
music.play_tone(523, music.beat(BeatFraction.DOUBLE))
music.play_tone(392, music.beat(BeatFraction.DOUBLE))
def on_gesture_shake():
basic.show_icon(IconNames.HEART)
hrajKoledu()
basic.clear_screen()
input.on_gesture(Gesture.SHAKE, on_gesture_shake)
Blokové programování tedy rozhodně není jen pro děti. Ostatně, většina rodičů vám stejně řekne, že byť se dětem líbí pípající Micro:bit a srdíčka na jeho displeji, nakonec to stejně všechno naprogramovali jejich tatínkové a maminky.
Čtyři stovky leckoho odradí, ale vyplatí se to
Za nový Micro:bit dnes zaplatíte zhruba 400 korun. Není to málo a jistě mi už mnozí chcete namítnout, že nejlevnější čínské klony desek Arduino seženete na Aliexpressu doslova za pár desetikorun.
V případě Micro:bitu ale platíte vedle velmi dobrého továrního zpracování právě za to, že to celé prostě hned po připojení k PC funguje a můžete to dokonce skrze Bluetooth spárovat a programovat z mobilního telefonu.
Právě tato drobnost nakonec u zelenáčů rozhoduje o tom, jestli skutečně začnou, anebo to vzdají a deska za pár dolarů z AliExpressu skončí kdesi v krabici.
Tento článek je součástí balíčku PREMIUM+
Odemkněte si exkluzivní obsah a videa bez reklam na devíti webech.
Chci Premium a Živě.cz bez reklam
Od 41 Kč měsíčně
Algoritmické myšlení, logické uvažování, dovednost analyzovat problém a najít jeho řešení… to se hodí už dnes a do budoucna budou tyto schopnosti čím dál důležitější. Zábavnou formou se k nim vyplatí vést i děti. Sledujeme pro vás dostupné nástroje, stavebnice, služby a postupy.
Doporučujeme speciál Computeru Programování pro děti. Za 99 Kč si ho můžete objednat online a během několika dnů vám dorazí do poštovní schránky.