Fyzikální kabinet GymKT

Články Prostředí mBlock & modul Arduino mBlock a LASKKIT Arduino MAXI Starter kit

Programování v mBlock (ver. 5) & LASKKIT Arduino MAXI Starter kit

Modul Arduino dnes už snad není třeba ani představovat! Stejně tak se všude možně objevují různé stavebnice a sady jak pro výuku na školách, tak jen „pro takové to domácí bastlení“. Většina těchto sad obsahuje modul Arduino (zpravidla typ UNO), nepájivé pole, několik tlačítek, rezistorů, LED a někdy i pár dalších senzorů. Obsahy i ceny těchto sad jsou různé.

Když jsme na naší škole začali řešit, jak začlenit některý z těchto moderních (módních?) prvků do výuky, začal jsem právě řešit, kterou z nabízených sad použít. Jelikož si myslím, že není nutné rovnou zakoupit celý balík několika výukových sad, aniž bych si je sám nevyzkoušel, rozhodl jsem se první sadu koupit domů pro své soukromé hraní – „pěkně za své“. Rázem jsem měl postaráno o motivaci, proč z tak široké nabídky Arduino sad vybrat tu s nejlepším poměrem výkon/cena. Rovnou říkám, že jsem musel okamžitě zavrhnout všechny sady, co jsou primárně určené pro školy, nebo se aspoň tak profilují. Je to smutné, ale je to tak! Zcela zdeformovaný trh s učebními pomůckami dnes předpokládá, že jakékoliv pomůcky budou pořízeny z projektových financí (kombinace výzvy: „Hlavně čerpejme, dokud to jde!“ a metody: „Z cizího krev neteče“ 🙁), a tak tomu odpovídají ceny čehokliv, co je možné „projektově“ dodat do školství.

LASKKIT Arduino MAXI Starter kit

Nakonec jsem jako sadu „na zkoušku“ zvolil sadu LASKKIT Arduino MAXI Starter kit, která mě při ceně pod 1 300 Kč oslovila nejen velkým počtem komponent, ale především i určitou podporou. Nejde jen o krabici nacpanou součástkami, je zde k dispozici i hezky zpracovaný návod v podobě jakési učebnice a pochopitelně je možné stáhnout i zdrojové kódy. Vzhledem k tomu, že jako učitel, který by to měl jednou učit, potřebuji si vše předem sám (a svépomocí) vyzkoušel, hodí se jakýkoliv podpůrný materiál. A návod s třiceti na sebe postupně navazujícími a stále obtížnějšími zapojeními jednotlivých funkčních bloků a součástek, je naprosto super!

LASKKIT Arduino MAXI Starter kit
LASKKIT Arduino MAXI Starter kit

Zde bych jen rád důrazně upozornil, že nejsem placeným influencerem společnosti nabízející výše uvedený produkt! Pokud se zde uvedená pochvala produktu LASKKIT Arduino MAXI Starter kit některému z výrobců a prodejcům konkurenčních produktů nelíbí, mám pro něj vzkaz: „Snižte ceny nebo rozšiřte nabídku Vaší sady… Příště rád, jako učitel kupující školní pomůcky za své vlastní prachy, Vaší neodolatelné nabídce podlehnu!“

 Aktualizace 28. 6. 2020
Dnes jsem objevil zatím asi nejlevnější nabídku. Jedná se o  Arduino Upgraded Learning Kit společnosti Hadex. Tato sada obsahuje stejná čidla jako LASKKIT Arduino MAXI Starter kit, bohužel k ní není poskytována zmíněná učebnice, ale cenově je pod hranicí 1 000 Kč! To je zajímavá nabídka!

 

Osobně si nemyslím, že současné nasazování programování „všude a pořád“ je úplně tou pravou výukovou cestou. Kolik takových HURÁ-akcí tu již bylo? Především zde trochu vidím problém, zvoleného programovacího jazyka. Pohlédněte zpět, býval to Karel, Basic, Pascal, C… dnes se poměrně rozšiřuje Python. Chceme-li učit především algoritmizaci, je třeba najít nějaký způsob, jak se vyhnout potřebě znalosti syntaxe zrovna „módního“ programovacího jazyka. S ohledem, že chceme (budeme muset?) učit programování i humanitně zaměřené studenty (i ti mají právo žít v době nastupujícího průmyslu 4.0!), měli bychom asi spíše využít nějakého „vizuálního“ způsobu programování. Navíc, když už zrealizujeme nákup nějakých pomůcek, rádi bychom je využili na obou stupních víceletého gymnázia. A na nižším stupni gymnázia by mělo jít spíše o hraní, abychom nakonec přehnanou snahou ty naše budoucí kormidelníky průmyslu 4.x spíše neodradili.

Nabídka prostředí pro vizuální programování je docela pestá. Asi nejrozšířenější je Scratch. Když jsem hledal spojení tohoto prostředí s modulem Arduino, narazil jsem na složitější přípravu tohoto prostředí pro modul Arduino. Naopak jsem našel řadu odkazů na prostředí mBlock, kde byla obsluha modulu Arduino přímo podporována (a nejen Arduino, ale třeba i oblíbeného modulu Micro:bit). Jelikož je mBlock na aplikaci Scratch postaven, je zde tvorba programu obdobná. Právě díky okamžité možnosti tvorby programů pro modul Arduino, jsem tedy zvolil prostředí mBlock.

mBlock

Prostředí mBlock (souč. verze 5) lze stáhnout přímo ze stránek tvůrců (prostředí mBlock), dostupné je též jako aplikace ve Windows Store), nebo lze využít on-line verzi mBlock.

Bližší krátké seznámení s prostředí mBlock jsem již uvedl v člálnku: mBlock, Arduino a Multi-Function Shield (Funduino), proto tyto základní věci přeskočím.

prostředí mBlock - Arduino
prostředí mBlock – zvolení modulu Arduino UNO

Jen dodám, co sami vývojáři o mBlock píší: „mBlock je blokový multiplatformní programovací nástroj určený pro výuku STEAM. mBlock je postaven na základě Scratch 3.0 a umožňuje uživatelům kódovat Scratch postavičky, vytvářet animace a hry, psát kódy pro roboty a zařízení včetně robotů Makeblock, Micro:bit a Arduino. To vše nejen pomocí chycení a tažením bloků, ale i zápisem Pythonu nebo C. Pro pedagogy mBlock také poskytuje STEAM vzdělávací řešení, bohaté výukové zdroje a projektovou komunitu, která výrazně usnadňuje výuku kódování.“

prostředí mBlock - rozšíření
prostředí mBlock – přidání programového rozšíření

Zatímco podpůrné výukové zdroje a projektová komunita je pochopitelně v angličtině, celé prostředí je lokalizováno do češtiny. Tedy již nic našim hrátkám s modulem Arduino, popř. se sadou LASKKIT Arduino MAXI Starter kit, nebrání!



mBlock & LASKKIT Arduino MAXI Starter kit


Následující část článku uvádí všech třicet jedna ukázkových příkladů z manuálu (ver. 1.3) výukové sady LASKKIT Arduino MAXI Starter kit, kde jsou uvedeny ve zdrojových kódech pro Arduino IDE, zde jsou převedené do prostředí mBlock.

Při psaní těchto řádek sám ještě netuším, zda se podaří v prostředí mBlock vytvořit totéž, co bylo původně vytvořeno v prostředí Arduino IDE, ani na jaké problémy při tvorbě kódu v mBlock prostředí nakonec narazím. Jak jinak ale vyzkoušet, zda zvolená cesta – MAXI Starter kit & mBlock – by mohla být tou, kterou na naší škole nakonec zvolíme?

mBlock & Laskarduino

UPOZORNĚNÍ:
Dále jsou uvedeny k jednotlivým příkladům jen kódy v mBlock, kterých jsem autorem. Zadaní, schémata, fotografie a doprovodné texty k daným úlohám, jejichž autorem je společnost Laskarduino, si musíte najít v návodu sady LASKKIT Arduino MAXI Starter kit – ke stažení na: LASKKIT Arduino MAXI Starter kit

 

Seznam programů k jednotlivým lekcím:

  1. Lekce 1 – Řízení LED tlačítkem
  2. Lekce 2 – Řízení LED PWMkou
  3. Lekce 3 – LED Tekoucí potok
  4. Lekce 4 – Interaktivní tekoucí LED světla
  5. Lekce 5 – Používání skeneru sběrnic I2C
  6. Lekce 6 – I2C LCD displej
  7. Lekce 7 – Bzučák
  8. Lekce 8 – Otřesové čidlo
  9. Lekce 9 – Kvízový bzučák
  10. Lekce 10 – Sériový monitor
  11. Lekce 11 – Fotorezistor
  12. Lekce 12 – Ovládání zvuku pomocí světla
  13. Lekce 13 – Senzor plamene
  14. Lekce 14 – Voltmetr
  15. Lekce 15 – Zvukový senzor
  16. Lekce 16 – Senzor hladiny vody
  17. Lekce 17 – Teplotní čidlo LM-35
  18. Lekce 18 – Sedmisegmentový displej
  19. Lekce 19 – Stopky – 4-místný sedmisegmentový displej
  20. Lekce 20 – 8×8 LED matice
  21. Lekce 21 – RGB LED
  22. Lekce 22 – Řízení sedmisegmentového displeje s 74HC595
  23. Lekce 23 – Hodiny reálného času
  24. Lekce 24 – Senzor teploty a vlhkosti vzduchu DHT11
  25. Lekce 25 – Modul relé
  26. Lekce 26 – Krokový motor
  27. Lekce 27 – Servo
  28. Lekce 28 – Joystick PS2
  29. Lekce 29 – Infračervený přijímač
  30. Lekce 30 – RFID vstupní ochranný systém
  31. Lekce 31 – Vstupní ochranný systém s heslem

 

Seznam dále použitých rozšíření:

Aby bylo možné použít dané rozšíření aplikace mBlock pro získání potřebný funkcí, musí být toto rozšíření nejdříve staženo a v okamžiku použití být přitomno v počítači. Při tvorbě programu je jasné, že bez stažení a přidání rozšíření danou funkci použít nemůžeme. Problém spíše nastává při otevření cizího programu. Pokud předchozí programátor použil blok z rozšíření, které nemáme stažené ve svém počítači, zobrazí se na místě chybějící funkce červený chybový blok.

Pro správnou funkci zde uvedených programů u každého kódu uvádím i použitá rozšíření. Zde je uveden přehled všech dále použitých rozšíření. Doporučuji je stáhnout všechna předem. Není třeba je hned všechny přidávat do projektu, stačí je stáhnout do PC kliknutím na symbol (+) (v pravém horním rohu nabízeného rozšíření) v manažeru rozšíření.

Použité rozšíření Použité rozšíření Použité rozšíření Použité rozšíření Použité rozšíření
Použité rozšíření 2 Použité rozšíření Použité rozšíření Použité rozšíření Použité rozšíření
Použité rozšíření Použité rozšíření Použité rozšíření Použité rozšíření

Stažení potřebného rozšíření je možné přímo v prostředí mBlock na liště příkazů (dole), kde se tím spustí manažer rozšíření.
mBlock - rozšíření

 


Lekce 1 – Řízení LED tlačítkem

mBlock - Řízení LED tlačítkem

Poznámka:

Prostředí mBlock primárně neumožňuje nastavení vstupního pinu do režimu PullUp. Je potřeba stáhnout rozšíření „INPUT_PULLUP Button“ (zelený blok v kódu) vývojáře Mburakkalkan. To přímo testuje zmáčknutí tlačítka.
Použité rozšíření
Použité rozšíření

Lekce 2 – Řízení LED PWMkou

mBlock - Řízení LED PWMkou

Poznámka:

Pozor na chybný český překlad příkazu „zaměnit [proměnná] za (hodnota)“! Správně by mělo být něco jako „Přičti k [proměnná] (hodnota)“ nebo „Změň [proměnná] o (hodnota)“.
Čekání se oproti Arduiono IDE zadává v sekundách a ne v milisekundách.

Lekce 3 – LED Tekoucí potok

mBlock - LED Tekoucí potok

Poznámka:

V mBlock se nastavuje režim pinMode podle prvního použití daného pinu. Automaticky se toto nastavení napíše VŽDY na začátek procedury Setup. V mBlock verze 3 to šlo ovlivnit pořadím použití proměnných a pinů, ve verzi 5 to již nejde! Když tedy použijeme pin určený proměnnou (třeba zde v cyklu u proměnnou thisPin), deklaruje se pinMode ještě před konkrétní hodnotou dané proměnné (při deklaraci se do ní automaticky vloží hodnota 0), tedy deklaruje se pinMode pro výstup číslo 0. Tak díky použití proměnné thisPin v cyklu, dojde v proceduře Setup k příkazu pinMide(thisPin, OUTPUT), kde thisPin je rovno 0 (a to i když thisPin násilně nastavím na 2 ještě před prvním použití výstupu – viz následující obr. Bloky vs. Vygenerovaný zdrojový kód). Z tohoto důvodu jsou na začátku vynulovány jednotlivé piny 2–9 ručně – kvůli správnému nastavení pinMode aspoň u pinů 2–9. Tak tady soudruzi v Číně udělali chybu! 🙁 Ale jinak kód funguje.

mBlock - probl0m s deklarací promněnných
Bloky vs. Vygenerovaný zdrojový kód


Lekce 4 – Interaktivní tekoucí LED světla

mBlock - Interaktivní tekoucí LED světla - program

mBlock - Interaktivní tekoucí LED světla - podprogram

Poznámka:

V mBlock lze používat podprogramy (tzv. Moje Bloky) – druhá část kódu s červenou hlavičkou ChangeLED.
Místo původní čisté „arduiňácké“ funkce Millis() je využita funkce předem připravená blokem časovač (ve zdrojovém kódu je vidět rozdíl, ale v blocích je to vlastně úplně jedno).

Lekce 5 – Používání skeneru sběrnic I2C

mBlock - Používání skeneru sběrnicí I2C

Poznámka:

Přidáním rozšíření I2C monitor se celý kód HODNĚ zjednodušil! 🙂
Je však třeba vyřešit problém Serial Monitoru, který není součástí prostředí mBlock. Kupříkladu v internetovém obchodě prohlížeče Chrome je Serial Monitor možné zdarma stáhnout podobně jako jiné rozšíření. Nestáhne se však jako rozšíření prohlížeče, ale jako samostatná aplikace (což je lepší).
Před připojením Serial Monitoru k Arduinu je třeba připojené Arduino odpojit od aplikace mBlock (tlačítko „Odpojit“). Při ukončení Serial Monitoru a pokusu o nahrátí kódu z mBlock je třeba to udělat obráceně – zavřít Serial Monitor a připojit mBlock (tlačítko „Připojit“). Někdy je třeba chvíli počkat, než se COM port uvolní pro nové připojení.
Použité rozšíření
Použité rozšíření

Lekce 6 – I2C LCD displej

mBlock - I2C LCD displej

Poznámka:

I nyní je potřeba použít rozšíření – tentokráte pro I2C LCD displej (vývojář: Nguyen Duc Anh) – zelené bloky kódu.
Souřadnice displeje (sloupec × řádek) začínají v mBlock od 1 (ve Wire to je od 0).
Pozor na použitou adresu displeje. Můj displej má adresou 3F a ne všechna rozšíření tuto adresu umožňují nastavit.
Některá rozšíření pro I2C displej se chovají „podivně“. Mně se osvědčilo to od vývojáře Nguyen Duc Anh.
Použité rozšíření
Použité rozšíření

Lekce 7 – Bzučák

mBlock - Bzučák

Poznámka:

Naprosto bez problémů, jen si musíme odpustit uložení čísla pinu 12 do nějaké proměnné (problém deklarace proměnné a nastavení pinMode)

Lekce 8 – Otřesové čidlo

mBlock - Otřesové čidlo

Poznámka:

Naprosto bez problémů, jen si opět musíme odpustit uložení čísla pinu 13 do nějaké proměnné (problém deklarace proměnné a nastavení pinMode) a nesmíme se pohoršovat nad kódem, kde v podmínce je hodnota 1 prezentována jako reálné číslo, tedy 1.000000. Všechny proměnné v mBlock jsou automaticky brány jako reálné (s tím asi ještě budou problémy!).
Použito rozšíření INPUT_PULLUP pro načtení PullUp pinu (modrý blok digital port(2)?). V lekci 1 bylo použito rozšíření pro test tlačítka, zde je použito podobné rozšíření jen pro samotné načtení stavu vstupu.
Použité rozšíření
Použité rozšíření

Lekce 9 – Kvízový bzučák

mBlock - Kvízový bzučák - program

mBlock - Kvízový bzučák - podprogram

Poznámka:

Tak tady se mBlock docela předvedl, složitý program a zcela bez problémů. 🙂
Opět použito rozšíření INPUT_PULLUP pro načtení stavu PullUp pinu, zde přiřazení stavu pinu pro test tlačítka (viz lekce 1) by moc použít nešlo.
Použité rozšíření
Použité rozšíření

Lekce 10 – Sériový monitor

mBlock - Sériový monitor

Poznámka:

A je tu ten průšvih s proměnnými – standardně v mBlock jsou deklarovány jen reálné proměnné! Naštěstí existuje rozšíření, které umožní pracovat s řetězci Strings (vývojář: extransfer). Tyto proměnné se pak označují String No 1, String No 2 atd. Není to nic moc přehledné, ale zaplaťpánbůh za to!
Před testem zadané barvy je třeba odebrat znak NL (New Line – chr(10)).
Problém je v nastavení výstupu na Serial Monitor. Zatímco rozšíření I2C monitor komunikující se Serial Monitorem používá nastavení Serial.begin(9600), zde použité standardní příkazy mBlocku komunikace se Serial Monitorem nastavují Serial.begin(115200) (zjistíte při pohledu na vygenerovaný zdrojový kód). Je třeba si na to dát pozor při nastavení aplikace Serial Monitoru při komunikaci s modulem Arduino.
Použité rozšíření
Použité rozšíření

Lekce 11 – Fotorezistor

mBlock - Fotorezistor

Poznámka:

Pro převod vstupní analogové hodnoty pinu A0 na škálu 0–8 použita funkce map (mBlock ji má stejně, jako jazyk Wire v Arduino IDE).
V cyklu Opakuj (8) krát nelze použít proměnnou indexu, nutné řešit svou pomocnou proměnnou.

Lekce 12 – Ovládání zvuku pomocí světla

mBlock - Ovládání zvuku pomocí světla

Poznámka:

Zcela bez problémů. 🙂

Lekce 13 – Senzor plamene

mBlock - Senzor plamene

Poznámka:

Kromě nutnosti nastavení Serial Monitoru pro čtení Baud Rate: 115200 opět bez problémů.

Lekce 14 – Voltmetr

mBlock - Voltmetr

Poznámka:

Pokud nechcete ukládat nějaký text (řetězec) do proměnné (což bez rozšířlení Strings nejde 🙁), tak mBlock s řetězci nakonec pracovat trochu umí – viz spojení hodnoty a značky pro volty.
Použité rozšíření
Použité rozšíření

Lekce 15 – Zvukový senzor

mBlock - Zvukový senzor

Poznámka:

Zcela bez problémů.

Lekce 16 – Senzor hladiny vody

mBlock - Senzor hladiny vody

Poznámka:

Původní nápad (viz manuál LASKKIT MAXI) s přepisováním hodnoty pomocí řetězcem mezer způsobuje blikání (šlo by řešit lépe!).
Přímé vypsání čísla na LCD vždy vypíše číslo s dvěma desetinnými místy (v programu 23 to je vyřešeno).
Použité rozšíření
Použité rozšíření

Lekce 17 – Teplotní čidlo LM-35

mBlock - Teplotní čidlo LM-35

Poznámka:

Programování v mBlock nemusí být jen záležitostí standardního textového výstupu. mBlock zvládne i převod ASCII kódu na znak (fialový blok) pro znak stupně.
Použité rozšíření
Použité rozšíření

Lekce 18 – Sedmisegmentový displej

mBlock - Sedmisegmentový displej - program

mBlock - Sedmisegmentový displej - clear LED

mBlock - Sedmisegmentový displej - prodcedura 1

mBlock - Sedmisegmentový displej - prodcedura 2

mBlock - Sedmisegmentový displej - prodcedura 3

mBlock - Sedmisegmentový displej - prodcedura 4

mBlock - Sedmisegmentový displej - prodcedura 5

mBlock - Sedmisegmentový displej - prodcedura 6

mBlock - Sedmisegmentový displej - prodcedura 7

mBlock - Sedmisegmentový displej - prodcedura 8

mBlock - Sedmisegmentový displej - prodcedura 9

mBlock - Sedmisegmentový displej - prodcedura 0

Poznámka:

Tohle je typická a obrovská nevýhoda blokového programování – i když jdou bloky procedur „rozházet“ po ploše vedle sebe (tady to není), rozsáhlejší projekt je dost nepřehledný.
V mBlock nelze nastavit direktivu #define, kterou je stanoveno (viz návod LASKKIT MAXI) zapnutí/vypnutí LED segmentu dle typu segmentovky (CA – společná anoda × CC – společná katoda), je to tedy řešeno proměnnou CA a podmínkami.

Lekce 19 – Stopky – 4-místný sedmisegmentový displej

mBlock - Stopky - hlavni program

mBlock - Stopky - procedura clearLED

mBlock - Stopky - procedura pickDigit

mBlock - Stopky - procedura pickNumber

mBlock - Stopky - prodcedura 1

mBlock - Stopky - prodcedura 2

mBlock - Stopky - prodcedura 3

mBlock - Stopky - prodcedura 4

mBlock - Stopky - prodcedura 5

mBlock - Stopky - prodcedura 6

mBlock - Stopky - prodcedura 7

mBlock - Stopky - prodcedura 8

mBlock - Stopky - prodcedura 9

mBlock - Stopky - prodcedura 0

Poznámka:

Zase jeden zápisem „nekonečný“ program. 🙁
POZOR: v návodu LASKKIT v popisu zapojení jsou zaměněny piny 11 a 12 (společné anody/katody pro druhou a třetí segmentovku), tak se nedivme, že to místo 0120 píše 0210. Správně má být: (4×7 seg.–Arduino) D2–12 a D3–11.
V původním programu (viz návod LASKKIT) je použito přerušení časovače. V mBlock práce s přerušení primárněm není, ani se mi nepodařilo najít nějaké užitečné rozšíření. Naštěstí je v mBlock dobrá práce s hodnotou časovače, takže program bylo možné vyřešit i bez přerušení.
Funkčně upravena procedura pickDigit, aby přidala desetinnou tečku před poslední číslici (desetiny sekundy).

Lekce 20 – 8×8 LED matice

mBlock - 8×8 LED matice - hlavni program

mBlock - 8×8 LED matice - prodcedura 1

mBlock - 8×8 LED matice - prodcedura 2

Poznámka:

Zpočátku neřešitelný úkol! Standardně v mBlock jsou piny A0–A5 považovány jen za vstupní. ALE: Pro ovládání 8×8 LED matice tyto piny potřebujeme nastavit jako výstupní. Pro nastavení pinů A1–A5 na výstup jsem ani nenašel žádné rozšíření. 🙁
Nejdříve jsem pro tento úkol vytvořil své vlastní rozšíření! To se dělá pomocí tzv. mBlock Extension Builder. Tvorbě vlastního rozšíření jistě věnuji zvláštní článek. (až to sám obstojně zvládnu)
Nakonec jsem zjistil, že digitální podoba pinů A0–A5 je dostupná pod čísly 14–19. Zde uvedený program je tedy bez „mého“ rozšíření.
Naopak pomocí již hotových rozšíření lze do mBlock dostat i pole proměnných. ALE: Jediné funkční a použitelné je LISTE-ARRAY (vývojář: mekablock), které je v turečtině.
Bohužel lze použít jen jednu proměnnou typu pole, nešlo tedy jednotlivá písmena předdefinovat, ale musí se nastavit pokaždé před vykreslením.
Použitá rozšíření
Použité rozšíření 2
Základy turečtiny pro samouky:
SAYI = celé číslo
(16) elemanlı SAYI tipinde Liste(Array) oluştur = Vytvořit pole List(Array) o (6) číselný prvcích
SAYI listesinin (0) index'ine (63) değerini ata = Přiřadit prvku pole o indexu (0) hodnotu (63)
SAYI listesinin (0). index değeri = Číselná hodnota prvku pole o indexu (0).

Lekce 21 – RGB LED

mBlock - RGB LED

Poznámka:

Prostředí mBlock zvládne volání procedur (tzv. vlastních bloků) se vstupními parametry, zde třemi: red, green a blue. Škoda, že nejde nastavit i výstupní (návratovou) hodnotu, aby to fungovalo jako funkce.
V mBlock existuje i rozšíření pro práci s RGB LED. Procedura color by s použitím tohoto rozšíření vypadala takto:

mBlock - RGB LED - nová procedura

Možné rozšíření
Použité rozšíření

Lekce 22 – Řízení sedmisegmentového displeje s 74HC595

mBlock - RGB LED

Poznámka:

Posuvný registr 74HC595 má přímou podporu v rozšíření R74HC595 (vývojář: extransfer). Jen pozor, je třeba použít proceduru updateShiftRegister, kde je možné nastavit i latchPin. (druhá procedura ShiftOUT vyvolává chybu) 🙁
V rozšíření R74HC595 nelze zvolit směr MSBFIRST nebo LSBFIRST odeslaného byte (tedy, zda je odeslán nejdříve nejnižší nebo nejvyšší bit). Zvolený směr v mBlock je opačný, než v původním návodu LASKKIT. Je třeba všechny předdefinovaná hodnoty pro vykreslení znaků v poli přepočítat.
Pomocí rozšíření lze do mBlock dostat i pole proměnných. ALE: Jediné funkční a použitelné je LISTE-ARRAY (vývojář: mekablock), které je v turečtině. 🙁
Pozor na nutnost dosadit jako index pole opravdu celé číslo.
Použitá rozšíření
Použité rozšíření Použité rozšíření 2
Základy turečtiny pro samouky:
SAYI = celé číslo
(16) elemanlı SAYI tipinde Liste(Array) oluştur = Vytvořit pole List(Array) o (6) číselný prvcích
SAYI listesinin (0) index'ine (63) değerini ata = Přiřadit prvku pole o indexu (0) hodnotu (63)
SAYI listesinin (0). index değeri = Číselná hodnota prvku pole o indexu (0).

Lekce 23 – Hodiny reálného času

mBlock - Hodiny reálného času - program

mBlock - Hodiny reálného času - podprogram 1

mBlock - Hodiny reálného času - podprogram 2

Poznámka:

Tady bylo třeba se více odchýlit od původního programu. Zaprvné použité rozšíření RTC (vývojář extransfer) nedovolí počáteční testování RTC (je otázka, zda je to třeba, když to slušně zvládá obsluhu RTC).
Zadruhé na displeji se musí čísla (počet minut a sekund) zbavit dvou desetinných míst – problém toho, že všechny proměnné v mBlock jsou automaticky deklarovány jako real. Nakonec se to řeší převodem a operacemi s řetězci.
Zatřetí použité rozšíření nevrací trojznakovou zkratku dne v týdnu, ale vrací pořadové číslo (pondělí je 1). Přibyla procedura Den-tydnu, která zobrazuje český název dne.
(Všimněte si, že název procedury zde může obsahovat jinak nepřípustný znak mínus)
Použitá rozšíření
Použité rozšíření Použité rozšíření 2

Lekce 24 – Senzor teploty a vlhkosti vzduchu DHT11

mBlock - Senzor teploty a vlhkosti vzduchu DHT11

Poznámka:

Použité rozšíření DHT Extensions (vývojář extransfer) nedovolí počáteční testování modulu DHT11 (i zde je otázka, zda je to třeba, když to slušně zvládá obsluhu DHT11).
Načtené hodnoty jsou na celé °C a % – ale opět problém zobrazení dvou desetinných míst (zde neřešeno).
Použitá rozšíření
Použité rozšíření Použité rozšíření 2

Lekce 25 – Modul relé

mBlock - Modul relé

Poznámka:

Jednoduchý kód na úrovni blikání LED.

Lekce 26 – Krokový motor

mBlock - Krokový motor

Poznámka:

Jediné rozšíření, které se chová, jak má, je ULN2003 Step Motor Sürücü (vývojář: extransfer), které je v turečtině! Anglické rozšíření nazvané stepper (stejný vývojář) vypadá stejné, ale při záporném počtu kroků motor nezmění směr otáčení. 🙁
Základy turečtiny pro samouky:
Tanımlamalar: [1]. Motor Adım Sayısı (100), IN1 (8), IN2 (9)… = Definice: krokový motor č. 1, (100) kroků na otáčku, vstup 1 (8), stup 2 (9)…
[1]. Motor Hız = rychlost motoru č. 1
[1]. Motor Adım (100) = Motor č. [1] vykoná (100) kroků
Použité rozšíření
Použité rozšíření

Lekce 27 – Servo

mBlock - Servo

Poznámka:

Nakonec použité rozšíření pro servo nazvané 8bots actuators (vývojář: saquarema), které je i pro stejnosměrné motory. Otatní rozšíření pro servo jsou spíše pro analogové servo.
Použité rozšíření
Použité rozšíření

Lekce 28 – Joystick PS2

mBlock - Joystick PS2

Poznámka:

Kromě nutnosti nastavení Serial Monitoru pro čtení Baud Rate: 115200 bez problémů.

Lekce 29 – Infračervený přijímač

mBlock - Infračervený přijímač

Poznámka:

Jediným problémem bylo moje vadné IR čidlo, jinak program i rozšíření funguje dobře.
Použito rozšíření IRremote (vývojář extransfer)
Použité rozšíření
Použité rozšíření

Lekce 30 – RFID vstupní ochranný systém

Program: getID

Zjištění čísla čipu/karty.

mBlock - RFID vstupní ochranný systém - getID

Program: rfID

Sepnutí relé pro zadané čipy/karty.

mBlock - RFID vstupní ochranný systém - rfID

Poznámka:

Pro modul RFID-RRC522 použito rozšíření MFRC522 RFID (vývojář: mekablock). Všechna dostupná rozšíření pro RFID bohužel umožňují nastavení jen pinů SDA (někdy ozn. SS) a RTS, jinak „natvrdo“ počítají se zapojením ostatních pinů: (RC522 - Arduino) SCK - 13, MOSI - 11, MISO - 12.
Oproti původnímu zadání sady LASKKIT MAXI musí být tedy změněno připojení modulu RFID na piny 9–13.
Použitá rozšíření
Použité rozšíření Použité rozšíření 2

Lekce 31 – Vstupní ochranný systém s heslem

mBlock - Vstupní ochranný systé s heslem

Poznámka:

Pro klávesnici použito rozšíření Keypad (vývojář smathuag). Toto rozšíření má jinak rozložené významy kláves (oproti příkladu v návodu LASKKIT). ALE: Toto rozložení více odpovídá reálné klávesnici (viz animace níže).
mBlock - keypad
Použitá rozšíření
Použité rozšíření Použité rozšíření 2 Použité rozšíření 3
Rozšíření Keypad také potřebuje zadat tzv. Buzz port, což je pin pro připojení pasivního bzučáku pro pípnutí při zadávání hesla (zde nepoužito, ale musí bý něco zadáno). Pípání nefunguje při testu klávesy příkazem Scan the keypad.
Rozšíření Keypad má také funkce Read string of (6) chars (popř. Read string to #), což jsou funkce pro načtení daného počtu znaků ( popř. znaků do stisknutí #). Při tomto zadávání je vstup znaku doprovázen pípnutím. Problém je, že při tomto zadávání nelze průběžně zobrazovat znaky na LCD. (proto funkce v kódu nepoužity)
Tento program se od původního kódu z návodu LASKKIT trochu liší.
Kupříkladu test shodnoti vstupu a hesla je zde řešen přímou rovností dvou řetězců oproti cyklu srovnávajícím každý znak zvlášť.
Přidána proměnná hvezdicka, která dovoluje vypisovat na LCD zadaná čísla až po stisknutí hvězdičky.
Také je zde hlavní testování „vnořeno“ do podmínky got a key value? (bylo něco stisknuto)

 


 

Závěr

Toto je všech 31 příkladů z manuálu LASKKIT Arduino MAXI Starter kit, které jsou zde tentokrá zpracovány v prostředí mBlock. I když prostředí mBlock díky svému blokovému způsobu programování může vyvolávat dojem jednoduchého nástroje pro nějaké „dětské“ programování, myslím, že úspěšné zvládnutí všech výše uvedený příkladů ukazuje, že se jedná o poměrně silný vývojářský nástroj.

Jelikož jsem v prostředí mBlock vlastně začátečník a výše uvedenené příklady využívám zejména pro seznámení s prostředím mBlock v kombinaci s modulem Arduino, je možné, že uvedené kódy jdou vytvořit efektivněji a že některé zde nastíněné problémy mají elegantní řešení.

Budu rád, když mám třeba zašlete lepší kódy, či jakýkoliv jiný svůj ohlas.

Autor článku: RNDr. Miroslav Panoš, Ph.D.