Skip to content

Ďalšie úlohy

Prázdny
1
2
3
4
5
# V této úloze si poprvé vyzkoušíte napsat celý program sami, není zde žádný
# připravený kód. Pomohou vám předchozí úlohy, ze kterých můžete věci kopírovat.
# 
# Napište program, aby se robot nejprve otočil okolo svého levého kola, potom
# vteřinu stál na místě a otočil se okolo pravého kola.
Presný pohyb
#!/usr/bin/env pybricks-micropython

# Problém předchozí úlohy je v tom, že robot se né vždy otočí o stejný úsek.
# Například pokud budou méně nabité baterie nebo bude jiný povrch na zemi. Zde
# si ukážeme funkci 'run_angle', která funguje trochu jinak než 'run'.  Začneme
# tím, co už známe:

from pybricks.ev3devices import Motor
from pybricks.parameters import Port


lavy_motor = Motor( Port.B )
pravy_motor = Motor( Port.C )

# Nyní použijeme 'run_angle', která kromě rychlosti potřebuje vědět ještě úhel,
# o který se má motor otočit. Pozor! Motor, né kolo. Pokud jsou mezi motorem
# a kolem převody, tak se kolo nemusí otočit o stejně jako motor.

pravy_motor.run_angle( 360, 720 )
lavy_motor.run_angle( 360, 720 )

# Nejprve se pravý motor otočil rychlostí 360 o 720 stupňů. To jsou dvě celé
# rotace motoru, neboť kruh má 360 stupňů a 360 * 2 = 720. Zkuste to odpozorovat,
# když robota spustíte, jestli se opravdu otočí dvakrát.

# Vraťte se k předchozí úloze, ale použijte 'run_angle' místo 'run'.
Opakovanie
#!/usr/bin/env pybricks-micropython

from pybricks.ev3devices import Motor
from pybricks.parameters import Port


lavy_motor = Motor( Port.B )
pravy_motor = Motor( Port.C )

# Často chceme aby robot něco zopakoval, například "třikrát blikni!". My zatím
# umíme jen hýbat motory, tak se zkusíme posunout třikrát dopředu.

lavy_motor.run( 360 )
pravy_motor.run( 360 )
wait( 500 )
lavy_motor.hold()
pravy_motor.hold()
wait( 100 )

lavy_motor.run( 360 )
pravy_motor.run( 360 )
wait( 500 )
lavy_motor.hold()
pravy_motor.hold()
wait( 100 )

lavy_motor.run( 360 )
pravy_motor.run( 360 )
wait( 500 )
lavy_motor.hold()
pravy_motor.hold()
wait( 100 )

# Nyní to uděláme jinak, místo toho abychom kopírovali stejný kód pod sebe,
# napíšeme ho jenom jednou a řekneme, aby ho provedl třikrát:

for i in range( 3 ):
    lavy_motor.run( 360 )
    pravy_motor.run( 360 )
    wait( 500 )
    lavy_motor.hold()
    pravy_motor.hold()
    wait( 100 )

# Všimněte si, že všechny řádky pod prvním řádkem (se slovem 'for') jsou
# posunuté o 4 mezery vpravo. Řádek takto posunete, když nastavíte kurzor na
# začátek řádku a potom stisknete tabulátor (na klávesnici je hned nad
# caps-lockem). Zkuste změnit program tak, aby šel dopředu až 5 krát.
Opakovanie -- štvorec
1
2
3
4
# Pamatujete si, jak jste programovali robota, aby šel do čtverce? Také tam
# bylo opakování - čtyřikrát jste napsali za sebe stejný kód. Čtyřikrát šel
# robot dopředu a otočil se do strany. Nyní použijeme nový způsob s 'for i in
# range( ? )'.
Opakovanie -- i
#!/usr/bin/env pybricks-micropython

# Přečtěte si tento program, spusťte ho a potom nám vysvětlíte jak funguje :)
# Nebojte se experimentovat a upravovat ho, aby jste si vyzkoušeli, že to
# opravdu funguje tak, jak si myslíte.

from pybricks.ev3devices import Motor
from pybricks.parameters import Port


lavy_motor = Motor( Port.B )
pravy_motor = Motor( Port.C )

for i in range( 5 ):
    lavy_motor.run( 360 )
    pravy_motor.run( 360 )
    wait( i * 500 ) # `*` znamená násobenie
    lavy_motor.hold()
    pravy_motor.hold()
    wait( 100 )