Zvukový modul ME Audio Player od firmy Makeblock můžeme v případě mBota použít ke spoustě lumpáren. Například nám může mBot hlásit přesnou vzdálenost předmětů v okolí, nebo se může změnit v krutopřísného špiona (ovšem bez návyku na martini – „protřepat, nemíchat“). V druhém díle si představíme dva praktické projekty, které využívají zvukový modul od Makeblock.
Tento článek navazuje na předchozí díl o použití zvukového modulu, ve kterém popisuji principy používání tohoto modulu. V tomto článku budu popisovat dvě aplikace zvukového modulu.
Projekt „Ukecané měření“
Jistě jste měli někdy příležitost sledovat při práci řemeslníky, kteří používají moderní měřící techniku – digitální metry. Tato udělátka bývají někdy opatřena laserem, aby byl zcela jasný bod, ke kterému měříme a jindy ne. Každopádně fungují tak, že vám po aktivaci na displej vypíší přesnou hodnotu, kterou jste naměřili.
Zatím jsme sice nedokázali zabudovat do mBota laser (i když v budoucnu by na to možná mohlo dojít), ale zase s pomocí zvukového modulu ME Audio Player dokážeme naučit mBota naměřenou vzdálenost pěkně nahlas odrecitovat.
Namontujeme tedy na mBota zvukový modul ME Audio Player. Při tomto projektu budeme také využívat ultrazvukového modulu, takže pokud jste jej z nějakého důvodu demontovali, pěkně si jej zase vraťte zpět. Ultrazvukový modul umí poměrně přesně měřit vzdálenost až na 4 m. Celý program, který použijeme v projektu tedy budeme sestavovat s tím, že mBot umí měřit maximálně v rozsahu čtyř metrů.
Tip: Program pro mBota naleznete ke stažení na konci článku. Zvukové soubory, které při projektu využívám, naleznete ke stažení na tomtéž místě (nebo u předchozího článku).
Programy a podprogramy pro zvukový modul
Projekt ukecaného měření již není jednoduchý program, jaké jsme sestavovali v předchozích článcích. Proto není složen z jednoho programu, ale z několika. Jeden program je ale hlavní (ano je to ten se záložkou mbot program) a ve svém fungování se odkazuje postupně na ostatní podprogramy, které mu s jeho činností pomáhají.
Hlavní program (viz. obrázek) – udržuje celkový průběh činnosti a spouští podprogramy podle potřeby.
podprogram cislaVRetezci – Vzdálenost, kterou mBot naměřil, tento podprogram „rozebere“ na jednotlivá čísla (maximálně třímístná hodnota) a každé číslo zvlášť zapíše do tomu určených proměnných.
podprogram jednotky, desitky a stovky – tyto podprogramy slouží k tomu, aby dokázaly porovnat a převést čísla v proměnných na zvukové soubory, obsahující slovní (a zvukové) vyjádření dané hodnoty.
V hlavním programu napřed na začátku inicializujeme zvukový modul. To nemusíme dělat víckrát a proto je tato akce v programu jen jednou, mimo nekonečnou smyčku.
V nekonečné smyčce je pak následující část programu a díky tomu můžeme opakovaně měřit kolikrát jen chceme.
První tři příkazy ve smyčce jsou celkem jasné. Hřbetní LED mBota svítí červeně a pokud nestiskneme tlačítko, nic se nezmění. Pokud jej stiskneme, rozsvítí se LED zeleně a rozjede se celý následující program. Napřed mBot změří vzdálenost a zaokrouhlí ji. Potom spustí se úvodní zvukovou hlášku o naměřené hodnotě. Pak naměřenou hodnotu prožene podprogramem cislaVRetezci, který toto číslo rozebere na jednotlivé znaky a vloží je do proměnných. Navíc nám také zjistí jak dlouhé je číslo, které jsme vlastně naměřili (myšleno kolik má míst).
Po této akci se vracíme do hlavního programu. Hlavní program se pak větví na tři větve, podle toho jestli je hodnota, kterou mBot naměřil jednomístná, dvojmístná, nebo trojmístná. Pro každou tuto variantu je spuštěna trošku jiná činnost s podprogramy jednotky, desitky a stovky. Vzhledem k tomu, že se v českém jazyce čtou čísla zleva doprava, jsou i podprogramy spouštěny v režimu stovky – desitky – jednotky.
Celý program pak končí závěrečnou zvukovou hláškou s o jednotkách ve kterých je výsledek hlášen.
Proměnné
V celém programu jsem použil více proměnných, které raději podrobněji popíši, aby bylo jasné, která hodnota se do jaké proměnné ukládá.
mereni – proměnná do které se ukládá „surová“ naměřená hodnota, která se pak dále zpracovává.
namerenaVzdalenost – proměnná do které se ukládá zpracovaná hodnota proměnné mereni. Tuto hodnotu zaokrouhlujeme a přidáváme korekci +5 (na tak krátkou vzdálenost nám senzor jinak hlásí 0)
delkaRetezce – nabývá hodnot 1 – 3 podle počtu znaků v proměnné namerenaVzdalenost. Z celého řetězce v podprogramu cislaVRetezci odečítáme znaky pro dvě desetinná místa a desetinnou čárku.
znak1, znak2, znak3 – proměnné do kterých se ukládá hodnota jednotlivých znaků v řetězci.
Projekt Špión
Cílem tohoto projektu bylo předělat mBota na špióna (a přitom využít zvukový modul).
V mých představách by se měl špiónský mBot někam šikovně a nenápadně infiltrovat, odposlechnout třeba rozhovor s něčím důležitým, rozhovor nahrát a pak důkaz v podobě kompromitující nahrávky donést svému majiteli. Když jsem tyto představy programoval, hned mě napadaly další – špionský mBot by měl být ovladatelný dálkově, měl by být mobilní (aby se mohl plížit a v případě přistižení i utéct) a měl by umět vysílat světelný maják, aby se dal třeba najít.
Dálkové ovládání jsem řešil prostřednictvím infraovladače, který je dodáván v základní sadě. Šikovní programátoři, kteří prošli seriálem až k tomuto projektu si jistě vzpomenou na lekci věnované práci s bluetooth ovladačem a snadno si program předělají pro bluetooth ovladač.
Hlavní program, který vše řídí poznáte snadno podle půlkulaté „hlavičky“. Je to zároveň pěkný příklad, jak používat definované funkční bloky (občas o těchto blocích mluvím jako o podprogramech). Tyto bloky si programátor navrhuje a vytváří v sekci „Data a Bloky“ sám a takto vzniklé programové widgety (příkazy, které mají fialkově modrou barvu) pak v hlavní programu spouští podle potřeby. Výhodou je větší přehlednost celého programu, který by jinak byl příliš rozsáhlý a nepřehledný. V případě hlavního programu je část v nekonečné smyčce a jeden bloček je mimo.
Bloček který naleznete mimo a který jsem pojmenoval „priprava“ se spouští pouze jednou při spuštění celého programu. Má za úkol vše připravit, aby zbylá činnost programu byla v pohodě. Tento bloček tedy připraví dvě proměnné, které se budou dál v programu používat – majak a rychlost – a inicializuje zvukový modul, aby byl použitelný pro zbytek programu.
Proměnné
V programu jsou použité dvě proměnné.
majak – tato proměnná může nabývat hodnoty 0, nebo 1. Pokud je hodnota aktuálně 0 – maják není aktivovaný, pokud 1, mBot spustí světelnou signalizaci.
rychlost – v proměnné rychlost naleznete celkem tři možné hodnoty – 100, 200 a 255. Tímto parametrem stanovíte rychlost, která má být použita při aktivaci pohybu. MBoty by se měl buď plížit rychlostí 100, nebo standardně cestovat rychlostí 200, nebo maximální rychlostí 255 prchat před pronásledovatelem.
Programové bloky „zarazeniRychlosti“ a „rizeniSpiona“ se staraji, jak již jejich název napovídá, o pohyb mBota. V podstatě jde pouze o naprogramované reakce na stisk tlačítek na infraovladači. V případě bloku „zarazeniRychlosti“ měníme stav proměnné rychlost tlačítky A, B a C. V druhém případě pak šipkami ovládáme směr jiízdy mBota.
Programový blok „svetelnyMajak“ provádí činnost, kdy mBot signalizuje světlem svou polohu. V tomto bloku v prvé části naleznete kombinaci dvou v sobě vnořených podmínkových příkazů s reakcí na stisk tlačítek ovladače D a E. Těmito tlačítky můžete měnit hodnotu proměnné majak a tím i zapínat a vypínat světelnou signalizaci, což je prováděno v druhé části následujícím podmínkovým příkazem.
Programové bloky odposlech1 – 3 slouží pro dálkové spouštění nahrávání potenciálních obětí špiona :-). Nahrávky ukládá program na kartu do tří souborů (spy001.mp3, spy002.mp3 a spy003.mp3). Pokud je spuštěno nahrávání opakovaně bude k dispozici na daném souboru pouze poslední nahrávka. Vždy je možné tlačítky na ovladači v řadě spustit nahrávání, zastavit nahrávání a soubor s nahrávkou si přehrát.
Doufám, že se vám tyto dva projekty se zvukovým modulem Makeblock líbily a hlavně, že se líbily i dětem, které si je vyzkoušely.
mBot programy ke stažení
Zvukové soubory pro testování na SD kartu ke stažení
Program pro měření vzdálenosti