Výukový robot mBot2 – programujeme základní rutiny se CyberPi
V minulém povídání o programování mBota2 jsme si představili editor mBlock 5, kterým lze tohoto zajímavého robůtka pro výuku programování programovat. Používání software mBlock 5 je občas poněkud matoucí, jednak vzhledem k pracovitosti týmu z Makeblocku, který jej stvořil a za druhé také vzhledem k všeobjímající koncepci se kterou se mBlock 5 snaží programovat cokoliv robotického projede kolem jeho autorů. 😄
Je třeba také pochopit, že srdcem mBota2 je modul CyberPi, který ovšem také může existovat zcela samostatně bez šasi, které mu propůjčuje náš mBůtek. Proto jsou mezi bloky určenými pro mBota2 namíchané i programovací bloky určené pro ovládání scratchového pandy, který ovšem existuje výlučně ve virtuálním prostředí mBlock 5.
Nás ale zajímá mBot2 a tak se zkusíme prokousat množstvím bloků, které mBlock 5 nabízí a vyzkoušíme si je s modulem CyberPi.
Obsah článku:
Událost / Events – start programu
Každý program potřebuje nějaký impuls, něco co dá vědět robůtkovi, že má spustit ten který podprogram. V praxi i ve světě mBota2 je to řešeno formou událostí (pokud máte přepnuto na anglickou verzi tak je to ta skupinka bloků ve složce Events).
Systém práce s těmito bloky je celkem jasný a jednouchý. Tento bloček umísťujeme vždy na začátek programu. Kód který je na něj navěšený se začne provádět v momentě, kdy je daná událost odstartována. Pro užití stačí pouze přečíst popisky na modulech a celkem vám bude jasno. Někdy je ještě třeba událost upřesnit nastavením dalších parametrů v hlavičce.
Události je možné spouštět buď přímo z počítače (první dva bloky), přímo spuštěním modulu CyberPi nebo manipulací s ovládacími prvky na modulu (další tři bloky).
Jednou z možností je ovládání pomocí vestavěného gyroskopu (bloky 6 – 7 – o tom bych se podrobněji zmínil v dalších kapitolách). Zajímavou možností k využití je také i možnost spuštění události vázané na určitou úroveň osvětlení. Dovedu si představit program, kdy se mBot2 změní v nočního hlídače a režim pro hlídání bylo možné spouštět právě s využitím bloku č. 8.
Poslední tři bloky v seznamu události slouží ke startování podprogramů pomocí komunikace mezi více mBoty, nebo mezi CyberPi a mBotem 2.
Základní bloky určené pro signalizaci a programový výstup
Při programování mBota se CyberPi potřebujeme již od začátku nějakou zpětnou vazbu. Zkrátka na reakcích mBota můžeme lehce poznat, že náš program probíhá tak jak má. Pro tento účel jsou hned po ruce příkazové bloky ze skupin Zvuk, LED a Displej ve škále barev od karmínově rudé do fialové (prvé tři skupiny příkazů z vrchu). Použití bločků je vesměs jasné již z popisku bloků a jejich zasazení do rámce programu je dle mého názoru čistě intuitivní záležitostí. Nicméně uvedu pár příkladů jak tyto bloky používat.
Pro začátek si připravte mBota 2 nebo jen modul CyberPi k výkonu. MBot by měl být zapnutý a připojený kabelem k pc. Přes tlačítko nastavení si vytvořte spojení s mBotem a přepněte tlačítko varianty spojení na „Živě/Live“. Z bloků událostí si pak vyskládejte na programovací plochu následující sestavu bloků složených z událostí a purpurových bločků ze sekce „Zvuk“.
Program je velmi jednoduchý, ale přesto ho alespoň jednou větou popíši. V programu je demonstrováno, jak spustit určitou aktivitu v závislosti na stisku tlačítka na klávesnici vašeho pc. Samozřejmostí je, že pc musí být buď připojeno k mBotovi kabelem, nebo přes bluetooth adaptér, aby se informace o aktivitě na klávesnici dostala k mozku mBota – CyberPi a mohla se spustit požadovaná reakce na výzvu.
Podobným způsobem je možné vytvořit jednoduché reakce a použít pro ně zobrazovací bloky z dalších dvou kategorií. Takže uvádím příklady a schválně, jestli dokážete odhadnout fungování těchto jednoduchých prográmků již z obrázku.
Oba programy budou na konci článku ke stažení, takže se můžete snadno přesvědčit, jestli jste hádali správně. Vše si můžete s CyberPi vyzkoušet.
Ovládání programu – podmínky, smyčky
Krátce v mém vyprávění o základech programování mBota 2 zmíním ještě o dvou základních programovacích rutinách, které se ostatně používají i ve spoustě dalších aplikacích, či robotech. Těmito rutinami jsou cykly, nebo také smyčky a podmínkové příkazy.
Smyčky – cykly
Smyčky jsou skupinou často používaných příkazů. Slouží pro zadávání opakovaných činností programu ať již ve formě opakování jednotlivých příkazů, či opakování celých skupin příkazů, či bloků. V editoru mblock 5 tyto příkazy naleznete ve skupině bloků „Ovládání„. V této skupině je příkazů více. Lze použít příkaz pro tzv. nekonečnou smyčku – což bude znamenat to, že mBot2 bude provádět bloky vložené do těla smyčky donekonečna. Smyčky mohou být samozřejmě také s přesně stanoveným počtem cyklů, případně s podmínkou, díky které lze chod smyčky za určitých podmínek přerušit, případně spustit. Smyčky lze samozřejmě vkládat jednu do druhé a vytvářet tak komplikovanější programové konstrukce. Příklady použití různých typů smyček naleznete na následující grafice a samotný kód pro CyberPi samozřejmě pověsím i za článek.
V programu můžeme pomocí stisku kláves na klávesnici (program je třeba zkoušet v režimu „Živě“) spustit čtyři různé události, které nám spustí čtyři různé podprogramy. Klávesy 1 – 3 nám spustí zvukový signál o počtu pípnutí daném počtem cyklů (klávesy 2 a 3). Klávesou 2 a 3 jsme si tedy vyzkoušeli smyčku s přesným počtem cyklů. Klávesou mezerník naopak spustíme nekonečnou smyčku a mbot2 nám bude nepřetržitě pípat. Pípání můžeme přerušit pomocí stisknutí joysticku na CyberPi (středová pozice) a tím si vyzkoušíme funkci smyčky s podmínkou na začátku.
Podmínkové příkazy
Podmínkové příkazy slouží mBotovi 2 k reakcím na okolí a rozhodování. Pomocí podmínkových příkazů můžeme stanovit reakce programu na stavy, které za jeho chodu nastanou. Pomocí operátorů pak můžeme spouštět reakce na poměrně komplikované stavy. Také podmínkové příkazy podobně, jako předchozí smyčky/cykly nalezneme ve stejné skupině příkazů označené jako „Ovládání„.
Bloky, které můžeme do této skupiny zahrnout jsou vlastně dva. Oba poznáte podle toho, že popiska na bloku začíná slovem „když…“. Jeden z těchto bloků umožňuje pouze jednu reakci na stav kdy je určitá podmínka splněna a druhý umožňuje reakci na stav, kdy je podmínka splněna i na stav když splněna není.
V programu pro demonstraci jak fungují podmínkové příkazy jsem nastavil tři různé reakce na stav joysticku. Vždy v závislosti na stavu joysticku se mění barva LED na mBot2. Všechny tři podmínkové příkazy jsou zasazeny do nekonečné smyčky tak, aby program neustále testoval polohu páčky joysticku a přizpůsoboval svit LED podle programu v CyberPi.
Závěrem…
Řekli jsme si něco o událostech, které spouští akce mBota 2 a jeho CyberPi. Také jsem se zmínil o těch nejjednodušších světelných signálech a zvuku. Podrobněji jsme se podívali na nejrůznější bloky ze sekce „Ovládání“ mezi které patří smyčky/cykly a podmínkové příkazy, ale také i příkaz pro ovládání času („Počkej„). Příště bychom si mohli vyzkoušet třeba řízení pohybu mBota 2. Uvidíme…
mBot programy z článku ke stažení:
Program pro demonstraci podmínkových příkazů
- Výukový robot mBot2 – ultrasonic - 7.11.2023
- Výukový robot mBot2 – krása pohybu - 23.5.2023
- Výukový robot mBot2 – programujeme základní rutiny se CyberPi - 29.12.2022