Seznámili jsme se spolu (papírové koule s otázkou) a vzpomněli si na micro:bit a programovací prostředí makecode.
Budeme používat zelený papírek na monitoru = mám hotovo a červený papírek = potřebuji pomoct.
Letos budeme vyrábět vlastní roboty a s nimi pak postupně uspořádáme závody:
dálkové ovládání na rychlost a na přesnost
sumo zápasy (vytlačování z ringu)
jízda po čáře
Na začátku hodiny jsme si povídali o dvou typech servo motorů (a zkusili vlastním tělem):
Polohové servo umožňuje nastavit konkrétní polohu a používá se třeba u robotické ruky, hlavy, jeřábu a podobně. Naše malé servo motorky umí nastavit úhel od 0° do 180°.
Kontinuální = rotační servo, označené písmenem R, umožňuje plynulé otáčení na obě strany zvolenou rychlostí. Budeme ho používat na kolečka.
U našich motorků se opět zadává číslo od 0 do 180, tentokrát však
0 = maximální rychlost na jednu stranu
180 = maximální rychlost na druhou stranu
čísla mezi tím znamenají menší rychlost
90 = zastavit. Tedy pokud je motorek dobře seřízený a není zničený přetěžováním.
Animace z webu
gian-transmission.com
Vnitřnosti serva
lastminuteengineers.com
My sice zadáváme čísla od 0 do 180, ale reálně se servo motory ovládají délkou pulzů. Microbit tyto pulzy posílá za nás.
Servo se připojuje třemi drátky například na destičku Ring:bit nebo jinou rozšiřující desku:
hnědý = zem = G
červený = napětí = V
oranžový = signál = pin 0
(případně pin 1 nebo pin 2)
Oba druhy se ovládají úplně stejně.
Pokročilé > Piny > úplně dole Servo
Úkol: program servo
A: servo se roztočí jedním směrem,
B: servo se roztočí opačným směrem
A+B: servo se zastaví
Komu zbývá čas, pracuje na dálkovém ovladání, do programu robot přidá otáčení serva.
Pracujeme samostatně nebo ve dvojicích v programu robot.
Nachystáme si funkce pro ovládání robota, abychom nemuseli kód upravovat na více místech a program byl přehledný.
(Pokročilé > Funkce)
Místo několika různých funkcí můžeme vytvořit jednu funkci nastavMotory s parametry, za které dosadíme číslo pro levý a pravý motor.
Oba přístupy můžeme zkombinovat a vytvořit funkci jedDopredu pomocí funkce nastavMotory.
Úkol:
K destičce s microbitem připojíme dvě serva na pin 1 (1VG) a pin 2 (2VG).
Pozor, kam patří hnědý drátek.
Serva spojíme gumičkou nebo papírovou páskou vrtulkami od sebe, jako kola.
Při stisku A pojedou obě kola dopředu.
Při stisku B pojedou obě kola dozadu.
Při stisku A+B se obě kola zastaví.
Robota ovládáme nejprve přímo tlačítky A, B, teprve po vyzkoušení napojíme na dálkové ovládání.
Rozšíření:
otáčení na místě nebo zatáčení při náklonu doleva/doprava
(šlo by to plynule?)
změna rychlosti při náklonu dopředu/dozadu
Závěr: přehlídka programů, otázky nebo kahoot na serva:
Nastavím obě serva na 0, co se stane?
>>> Starší pracovní listy na microbiti.cz
>>> Prezentace
>>> Kahoot
Budeme potřebovat dřívka, špejle, gumičky, karton, tavnou pistoli, nůžky.
Robot musí mít místo na microbit a dvě serva. Obojí musí být vyměnitelné, tedy ne přidělané na pevno.
Co kdybychom mohli ovladačem plynule ovlivňovat, jak moc robot zatáčí? Zkusíme ovládnout ručičku polohového serva.
Nový testovací program naklon-ovladac:
Nejprve musíme vyzkoumat, jaká čísla bude ovladač odesílat a zapíšeme si hodnoty při největším náklonu vlevo a vpravo.
Potom teprve můžeme pravidelně odesílat náklon ovladače.
Co nastavit při startu, aby fungovala rádiová komunikace?
K micro:bitu na desce připojíme polohové servo a vytvoříme nový testovací program naklon-servo.
Co přičíst k náklonu, abychom dostali čísla od 0 do 180?
Bonus: Jak upravit výpočet, abychom mohli naklánět na opačnou stranu?
Přidáme stav ovladače, podle kterého pozná, zda má nebo nemá odesílat náklon:
A nastaví stav = 100 a opakuj stále odesílá náklon,
A+B nastaví stav = 500 a opakuj stále neodesílá nic.
Čísla stavů můžeme zvolit libovolně, třeba 1 a 0 nebo dokonce True a False. Nám se budou pro další ovládání robota hodit čísla větší než odesílaný náklon.
Pokračování:
Polohové servo vyměníme za rotační a pozorujeme, jak reaguje na náklon.
Jak upravit program, aby servo reagovalo pouze na jednu stranu náklonu?
Jak upravit hodnotu náklonu, aby byl rozsah od zastavení do plné rychlosti?
Programy ovladač a robot doplníme o plynulé zatáčení
Jak nastavit dva motory?
při stisku A+B musíme odeslat i stav, aby robot zastavil motory