V minulém díle o MyCobitu jsme si ukázali jednoduchý counter s MyCo. V tomto článku ho předěláme na kuchyňskou minutku s odpovídajícím výstupem – zahráním tónu, a to jak na interní zvukový výstup, tak na digitální výstup microbitu. Uvedený příklad pěkně demonstruje možnosti MyCobitu i specifika jeho programování.
Co budeme potřebovat pro náš MyCobit?
Pro vlastní kuchyňskou minutku nám bude opět stačit micro:bit s šikovným zdrojem a USB kabelem. Pokud ale vlastníte starší verzi micro:bitu – verzi 1.3B či 1.5, potom bude potřeba zvukový signál poslat přes externí výstup na bzučák. K tomu se dobře hodí kontaktní pole s propojovacími vodiči a také rozšiřující modul pro kontaktní pole. Pak budete potřebovat ještě buzzer, ale ten má většinou každý bastlíř v šuplíku. Všechny uvedené součásti a mnoho dalších, které umožňují začít jednoduše bastlit s microbitem, najdete také v české verzi populárního Starter Kitu pro microbit. V tomto kitu je samozřejmě i zmíněný buzzer!
Postup, jak nainstalovat MyCo do MyCobitu je uveden v předchozím díle. Dál už by měla být potřeba jen tabulka příkazů a hlavně chuť to vyzkoušet.
MyCobit jako kuchyňská minutka
Vyjdeme z předchozího příkladu s tím rozdílem, že první hodnota proměnné A bude vyšší a bude se postupně odečítat až k nule, potom zahraje melodii nebo spustí digitální výstup pro bzučák a zastaví se.
Nejdříve definujeme hodnotu, u které se odpočet zastaví. To se provede přes proměnnou A a z ní se načte proměnná B. Pokud chceme, aby se odpočet zastavil na hodnotě 0, musí být hodnota B o jednu nižší. MyCo ale se zápornými čísly pracovat neumí, nicméně v našem příkladu na to poslouží hodnota 15 (F) – tedy o jednu menší než hodnota 0 v dalším cyklu. Zápis programu v pořadí – číslo řádku, příkaz, hodnota:
0 4 F A = 15(F)
1 5 1 B=A
Potom definujeme hodnotu, od které se začne odečítat a výstup na matrici micro:bitu pro vizuální kontrolu.
2 4 6 definování počáteční hodnoty proměnné A = 6
3 5 4 výstup na horní řádek matrice micro:bitu
Následuje funkce odečtu jedné a časová prodleva. V minutce na vajíčka na hniličku by se musela hodnota nastavit na celou minutu (F), nicméně program se bude lépe zkoušet s kratším intervalem.
4 7 2 proměnná A = A – 1
5 2 9 čekej 1 s
Asi nejzajímavější část programu, kontrola hodnoty, u které program skončí. Dokud je hodnota proměnná A odlišná od hodnoty B, následuje další řádka – skok na začátek cyklu, ve chvíli kdy se budou rovnat, řádek přeskočí na další řádek programu.
6 C 3 přeskoč pokud A=B
7 3 4 skoč o 4 řádky zpět, tedy cyklus programu
Poslední část programu, která se otevře až po splnění předchozí podmínky. Řádek 8 zahraje jednu notu.
8 E 7 zahraj notu A
Protože starší microbity nemají interní buzzer, doplníme program ještě o digitální výstup na bzučák. MyCobit umí 4 digitální výstupy, pinout je popsaný dole v tabulce příkazů. Digitální výstup 0 je podle popisu na pinu 12. Pro realizaci projektu stačí buzzer jednoduše zapojit do kontaktního pole a připojit k microbitu.
Program bude ještě potřeba rozšířit o jeden řádek, který definuje dobu, po kterou bzučák sepne, řekněme na 1 s. Pak bude vypadat následovně:
9 5 B Digitální výstup na pin 12
A 2 9 Čekej 1 s
B 3 0 Skok zpět o 0 kroků, tedy konec programu
Pokud máte k dispozici jiný rozšiřující modul pro kontaktní pole, například Pinbit, který nemá výstup na pin 12, stačí upravit digitální výstup na jeden ze třech zbývajících pinů. Například pro pin 8 micro:bitu stačí poslat signál na digitální výstup 1. Řádka 9 by byla tedy 9 5 C.
Uložení a spuštění programu
Program se uloží zmáčknutím pravého tlačítka B, a následného zmáčknutí tlačítka levého A. Pokud program nefunguje jak má, je potřeba znovu vstoupit do režimu editace – reset a tlačítko B, program projít a případně opravit.
Pro odladění programu je výhodné nastavit krátkou časovou prodlevu, my jsme zvolili 1 vteřinu. Kuchyňská minutka ale funguje s prodlevou 1 minuta, je nutno tedy opravit řádek 5, příslušná hodnota proměnné je F. Celý řádek potom bude 5 2 F.
Čas kuchyňské minutky se nastaví úpravou proměnné A na řádku 2 – pro minutku na vajíčka na hniličku pak bude řádek 2 4 3.
Jiné řešení pro MyCobit
Existuje samozřejmě několik cest, jak se dostat k cíli. Uvedený program jsem zvolil tak, aby navazoval na předchozí příklad a aby ukazoval práci s proměnnou A a B. Nicméně náš problém by šlo efektivněji řešit pomocí proměnné C (případně D), které jsou přímo určené pro omezený počet kroků. Rozdíl oproti proměnné B je ten, že příkaz C jump odečítá při každém kroku z počáteční definované hodnoty a zároveň vrací program o nastavenou hodnotu řádků zpět. Vše uvedené, včetně tutoriálů jde vyzkoušet a nastudovat i na počítači.
A máme to!
A to je celé. Příklad kuchyňské minutky dobře ukazuje specifika MyCo. Programování v něm je poměrně jednoduché, ale má samozřejmě svoje omezení. Nicméně v podobě jaké je MyCo nyní, je dostatečně kompaktní na to, aby ho bylo možno použít ve spoustě mikrokontrolerů.
MyCobit provozovaný na microbitu je to dle mojí zkušenosti nejuniverzálnější systém, se kterým je možné vytvořit spoustu jednoduchých aplikací bez jakéhokoliv připojení na počítač. Tím se posouvá mikropočítač s obvykle jednoúčelovými aplikacemi na všestranný nástroj do kapsy, nebo třeba na zápěstí.