
IoT prakticky – programovanie Micro:bitu v jazyku Python - 1 časť
Python je interpretovaný programovací jazyk určený pre všeobecné programovanie. Hlavnou výhodou je jeho zrozumiteľnosť, takže zdrojovému programu v jazyku Python porozumie aj začiatočník a bude veľmi rýchlo vedieť realizovať v ňom svoje nápady. Naproti tomu ak by ste ukázali začiatočníkovi kód v programovacom jazyku C, kde sa to len tak hemží smerníkmi, asi by ste ho dosť znechutili a nadobudol by dojem, že programovanie je veľmi zložité.
Python bol navrhnutý ako vysoko modulárny. K dispozícií je niekoľko stoviek modulov, ktoré z neho robia rozšíriteľný jazyk pre potreby akéhokoľvek projektu. Dôležitým cieľom autorov jazyka Python je zachovanie zábavy počas tvorby aplikácií. To sa odzrkadľuje aj v názve jazyka - podľa britskej komediálnej skupiny Monty Python. Pokiaľ sa chcete učiť tento programovací jazyk na PC, je potrebné na počítač nainštalovať Python vo verzii 3.x z adresy https://www.python.org. Ako vývojové prostredie odporúčame PyCharm https://www.jetbrains.com/pycharm/.
Väčšina príkladov z tohoto článku aj jeho pokračovania je ukázaná vo videu.
Na programovanie aplikácií pre mikropočítačovú dosky Micro:bit môžete použiť webový nástroj na adrese https://python.microbit.org/v/1.1, vtedy nebudete musieť na lokálny počítač nič inštalovať.
Po vytvorení programu v prostredí si stiahnete z webu jeho binárny kód v súbore s príponou hex. Micro:bit, pripojený k počítaču pomocou USB kábla, sa na počítači zobrazí ako klasické USB úložisko, na ktoré stiahnutý súbor s programom stačí skopírovať. Program sa následne automaticky spustí na zariadení. V prípade aplikácie v jazyku Python, tento hex súbor obsahuje nielen kód aplikácie ale aj engine interpretra jazyka MicroPython
Je to trochu menej praktické, preto vývoj, zostavenie a zavedenie kódu do dosky Micro:bit môžete realizovať priamo na vývojárskom počítači. Stačí vám k tomu nástroj Mu-editor, ktorý je k dispozícii na https://codewith.mu. Program v jazyku Python pomocou tlačidla Flash zavediete priamo do mikropočítačovej dosky Micro:bit pripojenej cez USB. Nemusíte tak ako u webových vývojových nástrojov riešiť stiahnutie súboru s príponou hex a jeho kopírovanie do micro:bitu.
Podporované režimy nástroja Mu
Nebudeme primárne riešiť syntax jazyka Python, ale budeme sa venovať implementačným špecifikám jazyka Micro Python na mikropočítačovej doske BBC micro:bit, čiže obsluhou jeho hardvérových komponentov, čiže displeja, tlačidiel, zabudovaných senzorov a samozrejme aj možnosti práce so zbernicou, na ktorú je možné pripojiť rôzne zapojenia a externé moduly. BBC micro:bit má jednoduchý maticový displej z 25 LED diód, tlačidlá, senzor pohybu, naklonenia, teploty a intenzitu okolitého svetla. Podporuje dva druhy bezdrôtovej komunikácie - Bluetooth Low Energy (BLE) pre komunikáciu s mobilnými zariadeniami a rádiový prenos pre komunikáciu s inými zariadeniami BBC micro:bit. Taktiež je možná sériovú komunikácia s počítačom cez USB kábel.
Príkazom from microbit import * sa importujú knižnice obsahujúce špecifické funkcie pre microbit. Hviezdička určuje, že sa importujú všetky knižnice
Zobrazovanie
Zobrazovacie možnosti dosky Micro:bit sú pomerne skromné, k dispozícii je maticový displej z LED diód v usporiadaní 5 x 5. Jednotlivé LED sú individuálne adresované od (0,0) v ľavom hornom rohu až po (4,4).Tretím parametrom funkcie set_pixel() je jas príslušnej LED diódy
Na displeji možné staticky zobraziť jeden znak, alebo iný grafický symbol. Viac sa tam nevojde. Napriek tomu je aj na takomto displeji možné zobraziť aj niekoľko znakový textový reťazec. Trik je v tom že text vodorovne roluje.
Na zobrazenie statickej ikony preddefinovaného obrázku použijete príkaz v tvare
K dispozícii je veľké množstvo obrázkov
HEART, HEART_SMALL, HAPPY, SMILE, SAD, CONFUSED, ANGRY, ASLEEP, SMILE, SURPRISED, SILLY, FABULOUS, MEH, YES, NO, TRIANGLE, TRIANGLE_LEFT, CHESSBOARD, DIAMOND, DIAMOND_SMALL, SQUARE, SQUARE_SMALL, RABBIT, COW, MUSIC_CROTCHET, MUSIC_QUAVER, PITCHFORK, XMAS, PACMAN, TARGET, TSHIRT, ROLLERSKATE, DUCK, HOUSE, TORTOISE, BUTTERFLY, STICKFIGURE, GHOST, SWORD, GIRAFFE, SKULL, UMBRELLA, SNAKE
Zobraziť sa dajú ikony šípok: ARROW_N, ARROW_NE, ARROW_E, ARROW_SE, ARROW_S, ARROW_SW, ARROW_W, ARROW_NW kde smer je určený skratkami svetových strán na podčiarnikom a dokonca aj v analógovej forme vyjadriť čas s presnosťou na hodiny: CLOCK1 - CLOCK12
Hodiny aj šipky je možné zobraziť aj ako animovanú sekvenciu pomocou definovaných objektov polí ALL_ARROWS a ALL_CLOCKS . Takto môžete vytvoriť napríklad animovaný ukazovateľ hodín, ktorý používateľovi znázorňuje, že sa na niečo čaká:
Ak vám žiadna ikona z vymenovanej pomerne bohatej ponuky nevyhovuje, môžete si v matici 5 x 5 LED diód, ktoré tvoria pixely, nadefinovať vlastný obrázok. V päťmiestnych textových reťazcoch číslica 0 znamená zhasnutú LED diódu a číslami od 1 do 9 definujete jas rozsvietených diód. Napríklad

Nie každý má takú predstavivosť, aby takto vedel navrhnúť obrázok, prípadne aby si z takéhoto zápisu vedel predstaviť, čo sa zobrazí. Oveľa prehľadnejší je takýto zápis, kedy číslice v reťazcoch tvoria maticu 5 x 5 bodov.
Uhádli ste, je to hracia kocka, na ktorej je zobrazené číslo 5 a vidno aj obrysy kocky. Aj z vlastných obrázkov je možné vytvoriť animáciu, stačí z nich vytvoriť pole.
Napríklad hod kockou (pre jednoduchosť v jednoduchej postupnej sekvencii) by ste zobrazili pomocou animácie
Tlačidlá
Budeme rozlišovať prvky na interakciu dosky s používateľom a piny na zbernici určené na interakciu s pripojenými zariadeniami. Na interakciu s používateľom sú k dispozícii primárne tlačidlá A a B. V kóde sú reprezentované objektmi button_a a button_a. Migrantom z iných jazykov pripomíname, že telo cyklu while True: tvoria v jazyku Python všetky príkazy, ktoré sú pod týmto príkazom definujúcim cyklus odsadené od ľavého okraja začiatku príkazu o jeden tabulátor, prípadne alebo ako vývojári často používajú odsadenie o 4 medzery. V jednom súbore kódu však môžete použiť iba jeden druh odsadenia, buď tabulátormi, alebo medzerami Rovnako sú odsadené aj príkazy v podmienke typu if.
Funkcia is_pressed() kontroluje či bolo tlačidlo zatlačené v danom okamihu.V mnohých prípadoch je užitočná funkcia was_pressed(), ktorá vám prezradí, či tlačidlo bolo stlačené v čase, keď kód robil niečo iné.
Ak potrebujete zistiť koľko krát bolo tlačidlo stlačené počas určitého času, kedy bola doska uvedená do režimu spánku, napriek tomu však evidovala udalosti zatlačenia tlačidiel, použijete funkciu get_presses().
Tento príklad vypíše počet zatlačení tlačidla A počas intervalu 3s
pokračovanie nabudúce...
Zobrazit Galériu