Dokážete si představit minipočítač, který můžete programovat jen třemi tlačítky? V tomto článku si jeden takový představíme a možná budete překvapeni, co všechno se dá s takovým minimalistickým řešením vytvořit. Univerzální kuchyňská minutka, jednoduchý AD převodník nebo kompas jsou otázkou pár minut.
Jak jsem se dostal k MyCo programování?
Před pár lety, nějakou dobu po tom, co jsem se začínal seznamovat s úžasným světem elektroniky, jsem narazil na stavebnici Mikrokontroler – elektronika výuková sada od 14 let. Stavebnici jsem složil, mikrokontrolér, tlačítka a diody nasázel do nepájivého pole podle schématu, zapojil drátky a postupoval dál podle návodu. Zvláštní kombinací mačkání tří tlačítek jsem měl dosáhnout požadovaného efektu.
Zprvu to vypadalo nedosažitelně, ale německy důkladný návod mě nenechal na holičkách – netrvalo dlouho a série čtyř barevných diod zablikala v pořadí, v jakém měla! Během krátké doby jsem měl základní programy zvládnuté a nezbývalo, než celou stavebnici zapájet do nějaké trvalejší formy a vyzkoušet na ní programy vlastní.
Co je to vlastně MyCo?
Na začátku byla myšlenka malého počítače s jednoduchým rozhraním (Tastenprogrammierbare Steurung, zkráceně TPS, v anglické variantě MyCo, neboli My Computer). Autorem nápadu byl tvůrce elektronických stavebnic B. Kainka.
Úvaha byla taková, že mikropočítače či mikrokontrolery potřebují pro své programování připojení k počítači nebo mobilu. Tvůrci vymysleli komplexní prostředí, které umožní programovat takříkajíc z ruky, s minimalistickým grafickým výstupem, konkrétně čtyřmi světelnými diodami.
Výše uvedené je stavebním prvkem celého systému – čtyři diody dokáží zobrazit v hexadecimálním kódu maximální hodnotu 15 (F), sada programovacích příkazů a hodnot je omezena na stejnou hodnotu, tj. čtyři bity.
To je na jednu stranu omezující, nicméně díky tomu je také celý systém jednoduchý, přehledný a skladný. A omezení výrazně snižují další vlastnosti systému: čtyři digitální vstupy, čtyři digitální výstupy, dva analogové vstupy a jeden PWM výstup.
Co se s takovým vybavením dá vytvořit? Po tom, co si začátečník vyhraje s všemožným blikáním výstupních diod, časováním, proměnnými, dvěma tlačítky či podmínkami, není problém jako u každého otevřeného systému připojit na vstupy a výstupy například sedmisegmentový displej, klávesnici 4×4, zvukový výstup či nějaký senzor. Díky analogovým vstupům může MyCo posloužit třeba jako jednoduchý AD převodník.
S šikovnými vstupy (třeba s micro:bitem, vysvětlím níž) se mi podařilo během pár minut nakódit univerzální kuchyňskou minutku, jednoduchý kompas či VUmetr.
Jak se v MyCo programuje?
Nechci popisovat kompletní postup na programování v Myco, vše je dobře zdokumentováno v odkazech. Nicméně, zkusím aspoň jednoduchý nástin pro představu, jak to funguje. K dispozici máme tři tlačítka a čtyři led diody. Not great, but not terrible!
Práce s čísly
Vzhledem k omezeným vstupům a výstupům nezbývá než zadávat a číst data v binárním, respektive hexadecimálním tvaru. Pro člověka neznalého problému je dobré najít si nějaký převodník z desítkové do hexadecimální soustavy, a zkusit si na to přijít. Nebo počítat kliknutí tlačítkem. Odečtení „výstupu“ je pak potřeba umět převézt zpětně do desítkové soustavy. Není to složité, za krátkou chvíli už třítlačítkový programátor převádí z hlavy, podobně jako třeba uživatelé binárních hodinek.
Adresa, příkaz, hodnota
Každý řádek programu se skládá ze tří čísel. Zápis jednoho řádku vypadá třeba takto: 0 1 1
První číslo udává adresu, respektive číslo řádku, na kterém se nachází. Původní systém má navigaci pro přehledné čtení adresy – než se rozsvítí první příkaz, problikne číslo řádku.
Druhé číslo je příkaz, MyCo jich má, překvapivě, 15. Pro představu ukážu tři příkazy (v pořadí příkaz, název, hex kód příkazu a jeho popis):
1 Port 0001 Příkaz rozsvítí první diodu (počítá se z pravé strany)
2 Wait 0010 Program počká zadanou dobu. Začíná 1 ms, a hodnota 9 je například doba 1 vteřiny
3 Jump 0011 Skok zpět o zadaný počet řádků
Třetí číslo je tedy hodnota příkazu, v případě příkazu Port je to výstupní dioda, u příkazu Wait čas, u příkazu Jump počet řádků, o které se program vrátí.
Pokud bych chtěl výše uvedené rovnou využít, vypadal by program třeba takto: 0 1 1, 1 2 9, 2 3 2. Výsledkem je svítící pravá dioda.
Konkrétní příklad s vysvětlením se pokusím rozvést v pokračování.
Zápis do MyCo a spuštění programu
Asi nejzajímavější kapitola, tady totiž začíná ta pravá palcová gymnastika. Program funguje ve dvou módech, v módu editace a v módu běhu programu.
Pro editaci stačí zmáčknout tlačítko reset a zároveň pravé tlačítko. Pravým tlačítkem se skáče nejdřív po řádku (příkaz, hodnota), posléze i na další řádek. Levé tlačítko zadává příkazy a jejich hodnoty.
Pokud chci zapsat řádek „rozsviť první diodu“, bude palcová choreografie v pořadí levý, pravý, levý, pravý (1, 1 – rozsviť první diodu). A hotovo, jenom potvrdit program (obvykle obě tlačítka) a resetem (třetí tlačítko) spustit první rozsvícenou diodu!
Oprava programu
Do kódu lze libovolně vstupovat a editovat ho. Stačí kombinací resetu a pravého tlačítka skočit do editačního režimu, najít řádek, který je potřeba opravit, zadat novou hodnotu a potvrdit.
Spuštění programu
Stačí potvrdit program a restartovat. A už to běží! A to je vlastně celé.
S výše zmíněnými příkazy už by měl jít vytvořit jednoduchý blikač. Pro okamžité vyzkoušení jde stáhnout simulaci – SPS Emu
Další platformy
Původní MyCo byl nahraný v mikrokontroleru HT46F47, na stránkách tvůrce jsou k dispozici další platformy, například ATtiny44 či ATmega8. Hlavní podmínkou je, aby měl mikrokontroler dost nožiček na vstupy a výstupy. Shánčlivý bastlíř by tedy mohl sáhnout do šuplíku pro správný mikrokontroler a za krátkou chvíli si to celé vyzkoušet na vlastní palce.
Myco:bit a ještě další!
V projektu se poslední dobou angažoval též Neil Avery a připravil implementaci MyCo pro desky na základě micro:bitu. Program běží i na starých microbitech (1.3B), nicméně zajímavé to začíná být u micro:bitu V2. Podařilo se mu totiž rozšířit programovou tabulku o interní vstupy microbitu, takže je k dispozici zvukový vstup a výstup, akcelerometr či kompas.
Stačí jenom otevřít stránky autora, stáhnout hex soubor pro správnou verzi desky a flashnout ho do microbitu. Odkaz obsahuje základní informace, odkazy a několik vzorových příkladů. Podstatná je ještě tabulka příkazů, zde pro micro:bit V2.
V Myco:bitu je přehlednější čtení programu, na každé „straně“ (matrice 4×4) editovaného programu jsou vidět dva řádky programu, v jednom řádku příkaz, v následujícím jeho hodnota. Navigace v programu se zobrazuje v levém sloupci matrice (číslo řádku) a spodním řádku (stránka).
Příklad programování v microbitu:
Poslední implementaci, o kterou se Neil aktuálně snaží je nové Raspberry Pico.
Lidé kolem MyCo
Otcem programovacího jazyka a celého systému je Burkhard Kainka.
Popularizátorem a autorem knih nejen o MyCo je Juergen Pintaske.
A kometou, která tenhle zajímavý systém přenesla na aktuálně žhavé platformy Neil Avery – zdrojové kódy pro mycobit / microbit a další platformy podobné micro:bitu.
Závěr
MyCo bylo určeno především jako vzdělávací pomůcka pro programování pro děti od 14 let, nicméně je to zábavná hračka i pro dospělé a je jistě možné na něm vytvořit i serióznější, ale v každém případě zábavné aplikace – viz stránky pana Kainky. Přístupné jsou i zdrojové kódy, což dává myslím hodně zajímavé možnosti.
Jeho největší výhoda ale je, že se dá programovat z ruky. Podle mého názoru jde o unikátní záležitost a hlavně jednoduchý vzdělávací systém s výborně zpracovanou dokumentací vhodný pro děti, začátečníky v programování, ale užije si ho jistě i zvědavý geek.
Rozšířením na další platformy získává MyCo ještě další rozměr, z většinou jednoúčelově naprogramovaných mikrokontrolérů dokáže vytvořit docela všestranný nástroj.
Pro návrh složitějších programů je vhodné vzít si k ruce ještě papír a tužku, což také v dnešní přetechnizované době neuškodí. Člověk u programování dobře zaměstná svoji představivost a logické myšlení. A ještě jedna podstatná věc, programování MyCo je prostě návykové! :)
V dalším pokračování si ukážeme a vyzkoušíme konkrétní program. Tak se můžete těšit!