Obsah

Popis bloků

Více o operacích s bloky a celým programem jBlocks najdete na stránce Práce s programem.

Skupina Základní

Start

Blok Start slouží k označení začátku programu a může být použit pouze jednou. Za blokem Start následují všechny další příkazové bloky.

Nekonečná smyčka

Blok Nekonečná smyčka využíváme v hlavní části programu, která se neustále opakuje - napříkad čtení tlačítek, vypisování stavu senzorů apod. Pokud by program nekonečnou smyčku neobsahoval, došlo by po zpracování posledního příazu k ukončení vykonávání programu a „zamrznutí“ jBotBrainu.

Vypisování hodnot do konzole

Bloky Vypiš, Vypiš proměnnou a Vypiš bez odřádkování slouží k vypsání řetězce či proměnné do konzole. Můžeme tak ontrolovat stav proměnných a ladit program.

Parametrem je řetězec, který chceme vypsat. Řetězec je skupinou znaků a je ohraničen „uvozovkami“. Pokud chceme do řetězce vložit proměnnou či výraz, musíme uvzovky ukončit a výraz připojit znakem + (plus). Například tento zápis

slouží k vypsání obsahu proměnné promenna.

Komentář

Blok komentář použijeme tehdy, chceme-li do programu přidat nějakou poznámku, která nám později zjednoduší orientaci v kódu. Dobrý program se pozná mimo jiné i podle množství a srozumitelnosti komentářů. Na samotný běh programu nemá komentář žádný vliv, program je ignoruje.

Čekací smyčka

Čekací smyčka způsobí pauzu ve vykonávání programu. Prodleva se zadává v tisícinách sekundy, milisekundách (1 s = 1000 ms).

Aktuální čas v milisekundách

Blok uloží do celočíselné proměnné aktuální čas v milisekundách (1 s = 1000 ms). Při použití v konzolové aplikaci jde obvykle o čas od půlnoci 1. 1. 1970 (UTC), při použití v programu pro jBotBrain II jde o čas od spuštění programu. Je potřeba počítat s přetečením (po dosažení hodnoty 2 147 483 647 čas narůstá od -2 147 483 648).

Skupina Proměnné

Proměnná slouží k uchování hodnoty. Proměnné můžeme vytvářet, zapisovat do nich data a číst je. Prostředí jBlocks rozlišuje celkem tři datové typy proměnných:

Datový typ Java ekvivalent Příklad Rozsah
Celé číslo int -5, 0, 42 -2 147 438 648 .. 2 147 438 647
Bajt byte -5, 0, 'A' (65) -128 .. 127
Logická hodnota boolean true, false
Desetinné číslo float 0.00f, 42.207f 1,4×10-45 .. 3,4×1038

Operace s číselnými výrazy

V operacích s číselnými výrazy můžeme využívat proměnné typu celé a desetinné číslo. Chceme-li převést desetinné číslo na celé, použijeme tzv. přetypování - oříznutí desetinné části.

Operace Význam
+ Sčítání
- Odčítání
* Násobení
/ Dělení
% Modulo (zbytek po dělení)
++ Inkrementace o 1 (Operace a++ přičte k proměnné a hodnotu 1)
Dekrementace o 1
(int) Přetypování desetinného čísla na celé (oříznutí desetinné části)
<< a >> Bitové posuny – výraz (a << b) posune číslo a o b bitů doleva, výraz (a >> b) posune číslo a o b bitů doprava

Příklad bitových posunů:

Výraz Výsledek Před Po
8 >> 1 16 10002 100002
5 << 2 20 1012 101002
6 >> 1 3 1102 112

Pokročilé operace s čísly - Matematické funkce

Pokud nám operace typu sčítání, odčítání a násobení nestačí a potřebujeme například umocnit číslo či vypočítat hodnotu sinus, použijeme funkcí (metod) třídy Math z jazyka Java. Syntaxe číselnýchh výrazů totiž povoluje volání standarních Java funkcí.

Pokud například chceme v celočíselném výrazu spočítat odmocninu čtyř, použijeme následující zápis:

Místo konstanty 4 může být v závorkách uvedena i proměnná, případně další vnořená funkce. Hodnotě v závorce se říká parametr. Parametrů může být i více, v takovém případě jsou odděleny čárkami.

Operace (int) se jmenuje přetypování a slouží ke změně datového typu. Pokud bychom chtěli výsledek uložit jako desetinné číslo, použijeme přetypování (float).

Kromě níže vypsaných funkcí obsahuje třída Math také dvě konstanty - Math.PI a Math.E. První obsahuje hodnotu čísla π, druhá hodnotu čísla e (základ přirozeného logaritmu). Pokud je chceme použít, musíme opět využít přetypování na celé (int) nebo desetinné číslo (float).

Více opráci s matematickými funkcemi v příkladech.

Funkce Popis
abs(a) Vrátí absolutní hodnotu čísla a.
acos(a) Vrátí acrus cosinus úhlu a. Úhel je zadán v radiánech a může nabývat hodnot 0-PI.
asin(a) Vrátí arcus sinus úhlu a. Úhel je zadán v radiánech a může nabývat hodnot ←PI/2; PI/2>.
atan(a) Vrátí arcus tangens úhlu a. Úhel je zadán v radiánech a může nabývat hodnot ←PI/2; PI/2>.
ceil(a) Zaokrouhlí číslo směrem nahoru.
cos(a) Vrátí cosinus úhlu a. Úhel je zadán v radiánech.
exp(a) Vrátí ea, kde e je základ přirozeného logaritmu.
floor(a) Zaokrouhlí číslo a směrem dolů.
IEEEremainder(a, b) Spočítá zbytek podle standardu IEEE 754.
log(a) Vrátí přirozený logaritmus (základ e) čísla a.
max(a, b) Vrátí větší ze dvou hodnot a, b.
min(a, b) Vrátí menší ze dvou hodnot a, b.
pow(a, b) Vrátí a umocněno na b (ab).
random() Vrátí náhodné číslo větší než nebo rovno 0.0 a menší než 1.0.
round(a) Zaokrouhlí číslo a - vrátí nejbližší celočíselnou hodnotu.
sin(a) Vrátí sinus úhlu a. Úhel je zadán v radiánech.
sqrt(a) Vrátí druhou odmocninu a.
tan(a) Vrátí tangens úhlu a. Úhel je zadán v radiánech.
toDegrees(a) Převede úhel a z radiánů na stupně.
toRadians(a) Převede úhel a ze stupňů na radiány.

Operace s logickými výrazy

Operace s logickými výrazy můžeme využít při práci s logickými proměnnými nebo v pomínkách. Místo true je pro přehlednost použita hodnota 1, místo false hodnota 0. Stejně jako operace s číselnými výrazy je můžeme seskupovat kulatými závorkami.

! Negace:

A !A
1 0
0 1

&& Logický součin (AND, a) – konjunkce:

A B A && B
1 1 1
1 0 0
0 1 0
0 0 0

|| Logický součet (OR, a/nebo) – disjunkce:

A B A || B
1 1 1
1 0 1
0 1 1
0 0 0

^^ Exkluzivní logický součet (XOR, nebo) – exkluzivní („ostrá“) disjunkce:

A B A ^^ B
1 1 0
1 0 1
0 1 1
0 0 0

Ulož do

Celé číslo
Desetinné číslo
Logická hodnota

Blok Ulož do slouží k přiřazení hodnoty do proměnné. Název proměnné může obsahovat znaky a-z, A-Z a 0-9 a nesmí začínat číslicí. Je dobré používat jednoznačné názvy, aby bylo jasné, k čemu která proměnná slouží. Všechny identifikátory (názvy proměnných a funkcí) jsou v daném programu unikátní, nemůžeme tedy použít stejný název pro logickou a celočíselnou proměnnou či funkci. V opačném případě dostaneme chybové hlášení.

Pole

Pole je množina proměnných stejného datového typu (v našem případě Celé číslo (int) nebo Bajt (byte)), ke kterým přistupujeme jako k jednomu celku. Blok Vytvoř pole slouží k vytvoření nového pole s n prvky.

Příkazem Ulož do (pole) můžeme do libovolného indexu pole vložit eločíselnou hodnotu. Index pole je vepsán v hranatých závorkách a začíná číslem 0 - máme-li tedy pole o pěti prvcích, budou přípustné indexy 0, 1, 2, 3 a 4. Pokud chceme z pole číst (například v bloku Vypiš), použijeme zápis pole[0].

Pole bajtů se hodí zejména pro práci s rozhraním Bluetooth.

Skupina Konzole

Tato skupina je dostupná pouze v konzolovém režimu - program pro PC.

Načte z konzole číslo a uloží je do proměnné variable.

Načte z konzole desetinné číslo a uloží je do proměnné variable. Místo desetinné čárky je použita desetinná tečka.

Načte z konzole logickou hodnotu a uloží ji do proměnné variable. Hodnota proměnné je true, jestliže je číslo zadané v konzoli rovno 1, v opačném případě je hodnota proměnné false.

Vymaže konzoli. Pozor, tato funkce je dostupná pouze pro vestavěnou konzoli programu jBlocks, při spouštění programu z příkazové řádky příkaz nefunguje. Vymazání příkazové řádky je totiž závislé na konkrétním operačním systému.

Skupina Podmínky

Jestliže

Příkazy umístěné uvnitř bloku Jestliže se provedou pouze platí-li podmínka v parametru (tedy pokud výsledek výrazu v parametru odpovídá hodnotě true). V opačném případě je program ignoruje.

V podmínce můžeme použít různé porovnávací operátory:

Operátor Význam
.== Test rovnosti (rovná se)
!= Test nerovnosti (nerovná se)
< > Test nerovnosti (menší než, větší než) - pro číselné výrazy
<= >= Test nerovnosti Test nerovnosti (menší nebo rovno, větší nebo rovno) - pro číselné výrazy

Jinak

Blok Jinak může být umístěn pouze za blokem Jestliže. Příkazy v tomto bloku se provedou v případě, že podmínka v přecházejícím bloku Jesliže neplatí.

Cykly

Smyčka Opakuj provede příkazy umístěné uvnitř právě n-krát (podle hodnoty parametru). Hodí se v případě, že chceme nějakou operaci zopakovat několikrát, případně pokud chceme vypsat obsah pole.

Oproti tomu smyčka Opakuj dokud platí provádí příkazy umístěné uvnitř bloku dokud platí podmínka v parametru. Pokud bychom do parametru umístili pouze výraz true, dostaneme nekonečnou smyčku.

Pokud chceme cyklus ukončit dříve, než je definováno v podmínce, použijeme blok Vyskoč z cyklu.

Skupina Funkce

Funkce je blok příkazů, podprogram, který má svůj unikátní název. Můžeme volat z libovolné části našeho programu, případně ji spustit jako operaci na pozadí. Funkce je vhodné použít tehdy, když máme blok příkazů, který se v programu opakuje častěji - typicky zhasnutí všech LED diod, vypsání informací na LCD displej apod. Hodí se také na zpřehlednění programu - ve složitějším programu rozděleném na několik funkcí (podprogramů) se orientuje lépe než v jednolitém sledu příkazů.

V prostředí jBlocks se - narozdíl od běžných programovacích jazyků - parametry funkcí předávají formou proměnných, všechny proměnné definované v programmu jsou totiž globální. To znamená, že proměnná definovaná v hlavním bloku je přístupná ve všech funkcích (a naopak).

Funkce

Blok Funkce slouží k vytvoření nové funkce. Pro název funkce platí stejná pravidla jako pro název proměnné - můžem použít znaky a-z, A-Z a 0-9, přičemž název nesmí začínat číslicí.

Zavolej funkci

Blok Zavolej funkci spustí danou funkci a čeká na její ukončení.

Blok Zavolej funkci na pozadí spustí danou funkci na pozadí (jako vlákno). To znamená, že program nečeká na její ukončení a pokračuje dál. Do fuknce na pozadí můžeme umístit například blikání LED diodou, reakce na stisk tlačítek atd.

Časovač

Blok Časovač spouští danou funkci v zadaném časovém intervalu na pozadí. Jeho pouití je vhodné v případě, kdy chceme nějakou akci periodicky opakovat.

Návrat

Pokud chceme funkci předčasně ukončit a navrátit se k vykonávání hlavního programu, použijeme blok Návrat.

Skupina LED a tlačítka

Tato skupina je dostupná pouze u platformy jBotBrain II.

Rozsviť, zhasni a rozblikej LED

Rozsvítí jednu ze čtyř LED diod - GREEN1 a GREEN2 (zelená), ORANGE (oranžová) a RED (červená).

Zhasne zvolenou LED diodu.

Rozbliká LED diodu ve zvoleném intervalu (milisekundy).

Počkej na stisk tlačítka

Blok Počkej na stisk tlačítka pozastaví program a čeká, dokud není stisknuto libovolné či zvolené tlačítko.

Ulož tlačítka

Blok slouží k uložení hodnot všech tlačítek do celočíselné proměnné. Každému tlačítku odpovídá jedna z hodnot (pokud je stisknuto více tlačítek zároveň, jsou hodnoty spojeny operací OR):

Tlačítko Hodnota
S1 1
S2 2
S3 4
S4 8

Ulož stav tlačítka

Blok Ulož stav tlačítka uloží stav zvoleného tlačítka do logické proměnné. Pokud je tlačítko stisknuto, je hodnota proměnné true, v opačném případě má proměnná hodnotu false.

Jesltiže je stiknuto tlačítko

Blok je rozšířením bloku Jestliže. Příkazy uvnitř bloku se provedou v případě, že je stisknuto zvolené tlačítko.

Zahraj tón

Blok umožňuje zahrát zvolený tón bzučákem jBotBrainu. Program ihned pokračuje dalším příkazem, nečeká se na doznění tónu.

Skupina I/O porty

Tato skupina je dostupná pouze u platformy jBotBrain II.

Ulož analogový vstup

Blok Ulož analogový vstup uloží napětí naměřené na jednom z šesti analogových vstupů (0-5) do celočíselné proměnné. Napětí je uloženo v milivoltech (1 V = 1000 mV).

Ulož digitání vsup/port

Blok Ulož digitální vstup uloží stav jednoho z šesti digitálních vstupů (0-5) do logické proměnné. Pokud je na vstupu vysoká úroveň, má proměnná hodnotu true, v opačném případě je hodnota proměnné false.

Blok Ulož digitální port uloží stavy všech digitálních vstupů (0-5) do celočíselné proměnné. Stavy pinů jsou uloženy v horních šesti bitech výstupní proměnné.

Nastav digitání výstup/port

Blok Nastav digitální výstup nastaví stav jednoho z osmi digitálných výstupů (0-7) podle zadané logické proměnné (true - vysoká úroveň, false - nízká úroveň).

Blok Nastav digitální port nastaví stavy všech digitálních výstupů podle celočíselné proměnné. Každému digitálnímu výstupu odpovídá jeden bit proměnné (1 - vysoká úroveň, 0 - nízká úroveň).

Čítač

Blok uloží do proměnné frekvenci v Hertzech (1 Hz = 1 s-1) přečtenou na jednom z šesti digitálních vstupů jako desetinné číslo. Čítač lze využít například v kombinaci s modulem optobrány (SD 01).

Blok slouží k uložení počtu hran na zadaném digitálním vstupu do celočíselné proměnné.

Blok Vynuluj čítač nastaví počet hran čítače na nulu.

Skupina Motory

Tato skupina je dostupná pouze u platformy jBotBrain II.

Nastav servo

Nastaví servomotor připojený na jednom z digitálních výstupů na zadanou pozici v procentech nebo jako délku pulsu řídícího signálu. Hodnota 50% nebo 1500 ms odpovídá střední poloze osy. Pípustné hodnoty jsou v rozsahu 1-100% respektive 500-2500 ms, kde 1% a 100% nebo 500 ms a 2500 ms jsou krajní polohy (± 90°).

Nastav rychlost motoru

Nastaví rchlost jednoho ze dvou motorů (A nebo B) na požadovanou hodnotu 0-100 (0 = motor stojí, 100 = maximální ryclost).

Nastavit směr otáčení motoru

Nastaví směr otáčení motoru:

Hodnota Otáčení
CLOCKWISE Po směru hodinových ručiček
COUNTERCLOSKWISE Proti směru hodinových ruiček
STOP Brzda (motor zkratován)
STANDBY Odpojení motoru

Odpojit motory

Nastaví oba motory do režimu STANDBY (odpojí je).

Skupina Senzory

Tato skupina je dostupná pouze u platformy jBotBrain II.

Taktilní senzor

Uloží stav taktilního senzoru (modul SD 05) připojeného k danému digitálnímu vstupu do logické proměnné. Proměnná má hodnotu true, pokud je senzor stisknutý.

Podmínkový blok vycházející z bloku Jesliže. Podmínka je splněna, je-li taktilní čidlo stisknuto.

Čeká na stisk taktilního čidla.

Potenciometr

Přečte pozici osy potenciometru (modul SA 01) v procentech (0-100%) připojeného ke zvolenému analogovému vstupu a uloží do proměnné.

Infračervený dálkoměr

Uloží vzdálenost v cm přečtenou z dálkoměru (moduly SA 03, SA 05 nebo SA 06) připojenému k jednomu z analogových vstupů do proměnné typu desetinné číslo.

Teplotní čidlo

Uloží teplotu v °C přečtenou z teplotního čidla (modul SA 04) připojeného k jednomu z analogových vstupů do proměnné typu desetinné číslo.

Tlakové čidlo

Uloží hodnotu tlaku přečtenou z tlakového čidla (modul SA 02) připojeného k jednomu z analogových vstupů do proměnné typu desetinné číslo.

Ultrazvukový dálkoměr

Uloží vzdálenost v cm naměřenou ultrazvukovým dálkoměrem (modul SI 03) do celočíselné proměnné. Rozsah měření je 5-100 cm.

Akcelerometr

Uloží hodnotu zrychlení na dané ose (X, Y nebo Z) akcelerometru (modul SI 01) do proměnné typu desetinné číslo.

Gyroskop

Uloží hodnotu úhlu na dané ose (X, Y nebo Z) gyroskopu (modul SI 06) do proměnné typu desetinné číslo.

Resetuje akumulovanou hodnotu úhlu na dané ose (X, y nebo Z) gyroskopu (modul SI 06).

RGB senzor

Uloží do celočíselné proměnné intenzitu zvolené barvy naměřenou RGB senzorem (modul SI 04) - červená (R), zelená (G) nebo modrá (B). Rozsah hodnot je 0-255.

Uloží do pole o třech prvcích intenzitu všech barev RGB senzoru. Pole bude obsahovat tyto hodnoty:

Index Barva
0 Červená (R)
1 Zelená (G)
2 Modrá (B)

Kalibruje RGB senzor (modul SI 04).

Zapne (true) nebo vypne (false) osvětlovací LED na RGB senzoru (modul SI 04).

Senzor osvětlení

Uloží hodnotu přečtenou ze senzoru osvětlení (modul SI 02) do proměnné typu desetinné číslo.

Senzor čáry

Uloží pozici přečtenou ze senzoru čáry (modul SI 05) do celočíselné proměnné.

Uloží do pětiprvkového pole (indexy 0-4) hodnoty přečtené ze senzoru čáry (modul SI 05).

Kalibruje černou (BLACK) nebo bílou (WHITE) barvu snímanou senzorem čáry (moduly SI 05) či nastaví výchozí hodnoty (RESET).

Skupina Moduly

Tato skupina je dostupná pouze u platformy jBotBrain II.

LCD displej

Vypíše řetězec na LCD displej (modul MI 06) a odřádkuje.

Vypíše řetězec na LCD displej bez odřádkování (vhodné pro vypisování více údajů na jednom řádku).

Vymaže obsah zobrazený na LCD displeji a přesune ukazatel na první řádek.

RGB LED

Nastaví hodnotu barev na RGB LED diodě (modul MI 07) v pořadí červená (R), zelená (G), modrá (B).

Řadič krokových motorů

Nastaví chování jednoho ze dvou krokových motorů (A nebo B) připojených k řadiči:

Uloží stav krokového motoru do proměnné variable. Stav má hodnotu true, pokud již motor dosáhl určené polohy.

Skupina Logické řízení

Tato skupina je dostupná pouze u platformy jBotBrain II.

Ulož hodnotu čítače

Přiřadí čítač vzestupných/sestupných hran logické proměnné variable a uloží jeho stav do celočíselné proměnné count. Čítač lze nastavit jak oinkrementální nebo dekrementální pomocí znaménka + nebo -.

Resetuj čítač

Resetuje čítač přiřazený k logické proměnné variable.

Časovač

Nastaví časovač TON, TOF nebo TP s prodlevou v milieskundách. Časovače jsou neblokující, program tedy pokračuje dál bez ohledu na zadanou prodlevu.

TON Přijde-li na vstup vzestupná hrana (true), nastaví se na výstupu po uplynutí prodlevy logická 1 (true). Při změně vstupu na log. 0 (false) se na výstupu časovače okamžitě nastaví logická 0 (false).
TOF Přijde-li na vstup sestupná hrana (false), nastaví se na výstupu po uplynutí prodlevy logická 0 (false). Při změně vstupu na log. 1 (true) se na výstupu časovače okamžitě nastaví logická 1 (true).
TP Přijde-li na vstup impuls, nastaví se na výstupu okamžitě logická 1 (true). Po uplynutí prodlevy se na výstupu časovače nastaví logická 0 (false).

Skupina Bluetooth

Tato skupina je dostupná pouze u platformy jBotBrain II.

Nastaví napájení modulu Bluetooth (hodnota true pro zapnutí). Pro použití všech ostatních funkcí skupiny musí být modul zapnutý.

Odešle zadaný počet bajtů (buffer.length pro všechny prvky pole) prostřednictvím komunikačního rozhraní Bluetooth. Pole musí být datového type Bajt. Lze použít celá čísla (0, 1, 2, …) i literály pro znaky ('A' odpovídá hodnotě 65, ' ' hodnotě 32, …).

Přijme zadaný počet bajtů (buffer.length pro maximální počet) z komunikačního rozhraní Bluetooth, uloží je do zadaného pole Bajtů a jejich skutečnný počet uloží do zadané celočíselné proměnné. Ta má hodnotu 0, pokud nebyl přijat ani jeden bajt.

Odešle prosřednictvím komunikačního rozhraní Bluetooth zadaný řetězec. Odeslaný řetězec není ukončen znakem nového řádku "\n", ten je potřeba explicitně přidat (např. "Ahoj, světe\n").

Skupina Dashboard

Tato skupina je dostupná pouze u platformy jBotBrain II a slouží k práci s panely Dashboard.

Inicializace

Inicializuje komunikaci s Dashboardem. Inicializaci je nutné provést před prvním odesláním hodnoty. Mechanismus přijímání hodnot blokuje rozhraní Bluetooth, program by tedy neměl osbahovat žádné bloky ze skupiny Bluetooth.

Odesílání hodnot

Odešle hodnotu jako celé číslo, číslo s desetinnou čárkou, logickou hodnotu nebo textový řetězec.

Nastaví barvu panelu RGB LED dioda, případně barvu konkrétního pixelu panelu RGB LED matice. Barvu je samozřejmě možné odeslat také jako řetězec ve formátu RRGGBB.

Nastaví tón panelu Bzučák. Odeslaná hodnota je číselná konstanta shodná s kontantami v Java třídě jBotBrain2.hw.Sound.

Příjem hodnot

Událost vyvolaná přijetím hodnoty z daného panelu. Chová se podobně jako funkce - bloky, které následují, se zavolají po každém přijetí hodnoty. Příjem hodnot z panelů běží jako samostatné vlákno, událost tedy neblokuje hlavní program. Zpracování události by ale nemělo být příliš náročné (například nesmí obsahovat nekonečnou smyčku), jelikož může zdržet příjem dalších hodnot. Hodí se spíše k jednoduchému uložení příchozí hodnoty do proměnné.

Uloží právě přijatou hodnotu jako proměnnou s daným datovým typem (celé číslo, číslo s desetinnou čárkou nebo logická hodnota), aby ji bylo možné dále zpracovat. Tyto příkazy mají smysl jedině pokud následují za blokem události Přijata hodnota z panelu.

Uloží přijatou hodnotu do pole bajtů, kde každý bajt odpovídá jednomu znaku. Vhodné pro zpracování složitějších zpráv, které neobsahují číselné nebo logické datové typy (např. formát barvy).