Close

Minipočítač programovatelný třemi tlačítky – MyCo

Minipočítač programovatelný třemi tlačítky - MyCo

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.

Původní stavebnice MyCo
Původní stavebnice MyCo

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.

Programování v MyCo
Programování v MyCo

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!

Seznam příkazů pro MyCo
Seznam příkazů pro MyCo. Verze dalších mikrokontrolerů je rozšířená ještě o další interní vstupy (magnetometr, akcelerometr, atd.)

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.

Digitální a analogové (PWM) výstupy z Mycobitu
Digitální a analogové (PWM) výstupy z MyCobitu

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.

mycobit mikropocitac s microbit
MyCobit pro microbit

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 MyCobitu 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!


Odkazy a fóra pro MyCo

Honza Horáček

Napsat komentář