- UPOZORNĚNÍ:
- Na základě článku vznikly webové stránky Programování modulu Arduino v prostředí mBlock, kde najdete aktuální a rozšířené informace. Zájemcům doporučujeme navštívit!
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
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 – 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 – 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?
- 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 - Lekce 1 – Řízení LED tlačítkem
- Lekce 2 – Řízení LED PWMkou
- Lekce 3 – LED Tekoucí potok
- Lekce 4 – Interaktivní tekoucí LED světla
- Lekce 5 – Používání skeneru sběrnic I2C
- Lekce 6 – I2C LCD displej
- Lekce 7 – Bzučák
- Lekce 8 – Otřesové čidlo
- Lekce 9 – Kvízový bzučák
- Lekce 10 – Sériový monitor
- Lekce 11 – Fotorezistor
- Lekce 12 – Ovládání zvuku pomocí světla
- Lekce 13 – Senzor plamene
- Lekce 14 – Voltmetr
- Lekce 15 – Zvukový senzor
- Lekce 16 – Senzor hladiny vody
- Lekce 17 – Teplotní čidlo LM-35
- Lekce 18 – Sedmisegmentový displej
- Lekce 19 – Stopky – 4-místný sedmisegmentový displej
- Lekce 20 – 8×8 LED matice
- Lekce 21 – RGB LED
- Lekce 22 – Řízení sedmisegmentového displeje s 74HC595
- Lekce 23 – Hodiny reálného času
- Lekce 24 – Senzor teploty a vlhkosti vzduchu DHT11
- Lekce 25 – Modul relé
- Lekce 26 – Krokový motor
- Lekce 27 – Servo
- Lekce 28 – Joystick PS2
- Lekce 29 – Infračervený přijímač
- Lekce 30 – RFID vstupní ochranný systém
- Lekce 31 – Vstupní ochranný systém s heslem
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.
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.
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 procedurySetup
. 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ěnnouthisPin
), deklaruje sepinMode
ještě před konkrétní hodnotou dané proměnné (při deklaraci se do ní automaticky vloží hodnota 0), tedy deklaruje sepinMode
pro výstup číslo 0. Tak díky použití proměnnéthisPin
v cyklu, dojde v proceduřeSetup
k příkazupinMide(thisPin, OUTPUT)
, kdethisPin
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.
Bloky vs. Vygenerovaný zdrojový kód 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). 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 Monitor
u, který není součástí prostředí mBlock. Kupříkladu v internetovém obchodě prohlížeče Chrome jeSerial 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 Monitor
u k Arduinu je třeba připojené Arduino odpojit od aplikace mBlock (tlačítko „Odpojit“). Při ukončeníSerial Monitor
u a pokusu o nahrátí kódu z mBlock je třeba to udělat obráceně – zavřítSerial 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í. 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.
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
) 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, tedy1.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ý blokdigital 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. 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. 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í seSerial Monitor
em používá nastaveníSerial.begin(9600)
, zde použité standardní příkazy mBlocku komunikace seSerial Monitor
em 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í aplikaceSerial Monitor
u při komunikaci s modulem Arduino. 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. Poznámka:
- Zcela bez problémů. 🙂
Poznámka:
- Kromě nutnosti nastavení
Serial Monitor
u pro čteníBaud Rate: 115200
opět bez problémů. 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. Poznámka:
- Zcela bez problémů.
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).
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ě.
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. 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). 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.
- Základy turečtiny pro samouky:
- SAYI = celé číslo
- (16) elemanlı SAYI tipinde
Liste(Array)
oluştur = Vytvořit poleList(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).
Poznámka:
- Prostředí mBlock zvládne volání procedur (tzv. vlastních bloků) se vstupními parametry, zde třemi:
red
,green
ablue
. Š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: Poznámka:
- Posuvný registr
74HC595
má přímou podporu v rozšířeníR74HC595
(vývojář:extransfer
). Jen pozor, je třeba použít proceduruupdateShiftRegister
, kde je možné nastavit ilatchPin
. (druhá proceduraShiftOUT
vyvolává chybu) 🙁 - V rozšíření
R74HC595
nelze zvolit směrMSBFIRST
neboLSBFIRST
odeslanéhobyte
(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.
- Základy turečtiny pro samouky:
- SAYI = celé číslo
- (16) elemanlı SAYI tipinde
Liste(Array)
oluştur = Vytvořit poleList(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).
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)
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).
Poznámka:
- Jednoduchý kód na úrovni blikání LED.
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ů
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. Poznámka:
- Kromě nutnosti nastavení
Serial Monitor
u pro čteníBaud Rate: 115200
bez problémů. 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
) 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.
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). - 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říkazemScan the keypad
. - Rozšíření
Keypad
má také funkceRead 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)
Seznam programů k jednotlivým lekcím:
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í.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
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í.
Lekce 1 – Řízení LED tlačítkem
|
Použité rozšíření |
---|---|
![]() |
Lekce 2 – Řízení LED PWMkou
Lekce 3 – LED Tekoucí potok
Lekce 4 – Interaktivní tekoucí LED světla
Lekce 5 – Používání skeneru sběrnic I2C
|
Použité rozšíření |
---|---|
![]() |
Lekce 6 – I2C LCD displej
|
Použité rozšíření |
---|---|
![]() |
Lekce 7 – Bzučák
Lekce 8 – Otřesové čidlo
|
Použité rozšíření |
---|---|
![]() |
Lekce 9 – Kvízový bzučák
|
Použité rozšíření |
---|---|
![]() |
Lekce 10 – Sériový monitor
|
Použité rozšíření |
---|---|
![]() |
Lekce 11 – Fotorezistor
Lekce 12 – Ovládání zvuku pomocí světla
Lekce 13 – Senzor plamene
Lekce 14 – Voltmetr
|
Použité rozšíření |
---|---|
![]() |
Lekce 15 – Zvukový senzor
Lekce 16 – Senzor hladiny vody
|
Použité rozšíření |
---|---|
![]() |
Lekce 17 – Teplotní čidlo LM-35
|
Použité rozšíření |
---|---|
![]() |
Lekce 18 – Sedmisegmentový displej
Lekce 19 – Stopky – 4-místný sedmisegmentový displej
Lekce 20 – 8×8 LED matice
|
Použitá rozšíření |
---|---|
![]() |
Lekce 21 – RGB LED
|
Možné rozšíření |
---|---|
![]() |
Lekce 22 – Řízení sedmisegmentového displeje s 74HC595
|
Použitá rozšíření | |
---|---|---|
![]() |
![]() |
Lekce 23 – Hodiny reálného času
|
Použitá rozšíření | |
---|---|---|
![]() |
![]() |
Lekce 24 – Senzor teploty a vlhkosti vzduchu DHT11
|
Použitá rozšíření | |
---|---|---|
![]() |
![]() |
Lekce 25 – Modul relé
Lekce 26 – Krokový motor
|
Použité rozšíření |
---|---|
![]() |
Lekce 27 – Servo
|
Použité rozšíření |
---|---|
![]() |
Lekce 28 – Joystick PS2
Lekce 29 – Infračervený přijímač
|
Použité rozšíření |
---|---|
![]() |
Lekce 30 – RFID vstupní ochranný systém
Program: getID
Zjištění čísla čipu/karty.
Program: rfID
Sepnutí relé pro zadané čipy/karty.
|
Použitá rozšíření | |
---|---|---|
![]() |
![]() |
Lekce 31 – Vstupní ochranný systém s heslem
|
Použitá rozšíření | ||
---|---|---|---|
![]() |
![]() |
![]() |
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.