Projekt RoboPejsek na dálkové ovládání

3. Povel sedni a lehni

Povel sedni a lehni je vhodné vymyslet a otestovat nejprve ve zcela samostatné části programu, poté až přidat spuštění na základě stisku příslušného tlačítka.

Jak povel sedni, tak i lehni, bude pracovat s natočením středního motoru upravujícího polohu nožiček vůči tělu. Správný rozsah je potřeba otestovat. Při příliš velkém rozsahu hrozí překlopení pejska a poničení modelu, při malém pak pejsek nedělá dobře, co má.

Hodnoty počtu otáček či stupňů je dobré postupně navyšovat tak, aby nedošlo k poškození konstrukce pejska. V případě problémů lze běh programu kdykoli nouzově zastavit stiskem šedého tlačítka umístěného vlevo hned pod displejem.

Pro rychlejší testování doporučujeme motor následně programově vrátit do předchozí polohy (počet otáček či výkonu vynásobíme -1).
Chceme-li zadat např. 3,5 otáčky motoru, musíme zadat číslo s desetinnou tečkou (např. 3.5). Upozorňujeme, že otáčky jsou vázány na pohyb motoru, nikoli pohyb nožiček. Ten je dán převodem.

EV3 - ovládání středního motoru

Chyby: Velmi častou chybou žáků je záměna portu. Té lze předcházet připojením robota v době návrhu (mění automaticky písmenko portu dle připojených zařízení, např. C).

Reakce na stisk tlačítka

Vytvořenou, otestovanou a funkční část kódu by bylo potřeba vykonávat jen v případě, že bylo stisknuto příslušné tlačítko. Toho lze dosáhnout větvením programu na základě podmíněného výrazu (podmínky). Bloky pro podmíněné vykonání se nacházejí v oranžové sekci prostředí Flow Control pod názvem bloku Switch.

EV3 - reakce na stisk tlačítka

Tento blok může být řízen buďto externí podmínkou, nebo může být napojen např. na senzor a následně vyhodnocovat splnění očekávaného stavu. V našem případě se hodí blok napojit na infračervený senzor a režim porovnání - vzdálený vstup (Infrared sensor > Compare > Remote), kde si v dalším parametru zvolíme, která tlačítka budou znamenat splnění podmínky.

Pokud je takto uvedená podmínka splněna, vykonává se část s fajfkou (zaškrtnutím), pokud není, je proveden obsah v části s křížkem.

Chyba číslo dvě aneb ono mi to zase nefunguje

Pokud bychom spustili takto vytvořený program, zjistíme, že nám nebude fungovat. Je dobré se žáků zeptat, jak program probíhá a co má dělat, a případně je později upozornit na to, že program skončí (mohou vidět na displeji) a již opětovně netestuje stisk tlačítka na ovládači. Program nám nyní jen ihned po startu zkontroluje, zda senzor nezachytil signál o stisku požadovaného tlačítka, a skončí.

EV3 - opakování testování

Pokud chceme, aby program toto testoval opakovaně, musíme použít cyklus. V programovacím prostředí EV3 máme k dispozici pouze dva typy cyklů, s pevným počtem průchodů a s podmínkou na konci. Oba jsou reprezentovány jedním blokem Loop, v němž si volíme typ cyklu. Chybí nám cyklus s podmínkou na začátku a též cyklus s pevným počtem průchodů vyžaduje, aby proběhl alespoň jednou.

Podmínka pro ukončení cyklu může být různá, od počtu průchodů, porovnání hodnoty vstupu senzoru po časový limit. Velmi specifickým prvkem, který se v programování v rámci LEGO robotů používá velmi často, je nekonečný cyklus. Tento cyklus spolu s během celého programu přerušujeme vypnutím pomocí tlačítka umístěného vlevo pod displejem jednotky.

Protože chceme, aby náš RoboPejsek testoval signály z IR vysílačky opakovaně, použijeme nekonečný cyklus, do kterého zařadíme dříve vytvořené testování.

Rozlišení příkazů sedni a lehni (přidání více příkazů)

Pejsek si již na vyžádání sedne. Pokud chceme, aby si místo sednutí lehnul, stačí jen upravit směr prvotního natáčení a návratu a zjistit a nastavit míru (úhel) natočení.

Protože chceme, aby pejsek reagoval na více příkazů, musíme mu přidat další povely. Možnosti jsou následující. Buďto blok testování podmínky do cyklu umístíme ještě jednou, nebo původní přepneme do režimu měření (Infrared Sensor > Measure > Remote) a aktivujeme pohled více voleb (Tabbed View). Ten poskytuje i na místo úspornější grafické zobrazení.

EV3 - podmínka s více volbami

UPOZORNĚNÍ: Položka záložek označená tečkou je brána za výchozí, pokud nebude nalezena žádná z uvedených voleb tlačítek. V důsledku by to pro nás znamenalo, že by si pejsek pořád dokola sedal, i když by nebylo stisknuto žádné tlačítko. Je proto vhodné, abychom zařadili prázdnou položku nestisknuto žádné tlačítko a dali ji jako výchozí pro všechny ostatní kombinace.