vezérlő#
Bevezetés#
A VEX EXP vezérlő gombokkal és két joystick-kal rendelkezik. A vezérlőmetódusok segítségével ellenőrizhetők a gombnyomások, leolvashatók a joystick mozgása, engedélyezhetők vagy letilthatók a konfigurált vezérlőműveletek, illetve funkciók futtathatók vezérlőesemények bekövetkeztekor.
A konfigurált vezérlőműveletek az Eszközök menüben beállított vezérlőviselkedések. remote_control_code_enabled paraméterrel ideiglenesen engedélyezheti vagy letilthatja ezeket a konfigurált műveleteket egy projekt során.
Ez az oldal controller nevet használja példaként. Szükség szerint cserélje ki a saját konfigurált névre.
Az alábbiakban felsoroljuk az összes elérhető módszert:
Művelet – Be- vagy kikapcsolhatja a konfigurált kontrollerműveleteket.
remote_control_code_enabled— Engedélyezi vagy letiltja az Eszközök menüben konfigurált vezérlőműveleteket.
Getterek – Gombállapotok és joystick pozíciók beolvasása.
.pressing— Visszaadja, hogy egy adott gombot lenyomnak-e..position— Visszaadja a megadott joystick tengely pozícióját.
Visszahívások — Függvények futtatása a vezérlő bemenetének megváltozásakor.
.pressed— Egy függvényt futtat, amikor egy megadott gombot megnyomnak..released— Egy függvényt futtat, amikor egy megadott gombot elengednek..changed— Függvényt futtat, amikor a joystick helyzete egy megadott tengely mentén megváltozik.
Konstruktor — Controller objektum manuális létrehozása.
Controller— Létrehoz egy Controller objektumot.
Akció#
remote_control_code_enabled#
remote_control_code_enabled egy változó, amely engedélyezi vagy letiltja az Eszközök menüben konfigurált vezérlőműveleteket. A vezérlő által konfigurált műveletek alapértelmezés szerint engedélyezve vannak.
Usage:
remote_control_code_enabled = state
Érték |
Leírás |
|---|---|
|
Engedélyezi a vezérlő által konfigurált műveleteket. |
|
Letiltja a vezérlő által konfigurált műveleteket. |
# Drive forward or backward using the left joystick
remote_control_code_enabled = False
while True:
if controller.axis3.position() > 0:
drivetrain.drive(FORWARD)
elif controller.axis3.position() < 0:
drivetrain.drive(REVERSE)
# Press A to use controller configured actions again
elif controller.buttonA.pressing():
break
else:
drivetrain.stop()
wait(20, MSEC)
remote_control_code_enabled = True
Getterek#
.pressing#
.pressing visszaadja, hogy a vezérlő egy adott gombját jelenleg lenyomva tartjuk-e. Ezt a metódust egy adott gomb objektumon kell meghívni, például a controller.buttonA metóduson.
True— A megadott gombot megnyomják.False— A megadott gombot nem nyomják meg.
Használat:
Az egyik elérhető gombobjektum használható ezzel a metódussal:
Gomb |
Parancs |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Paraméterek |
Leírás |
|---|---|
Ennek a metódusnak nincsenek paraméterei. |
# Turn right while L1 is pressed
while True:
if controller.buttonL1.pressing():
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
wait(20, MSEC)
.position#
.position függvény visszaadja a joystick tengelyének pozícióját -100 és 100 közötti számként.
Ezt a metódust egy adott tengely objektumon kell meghívni, például controller.axis1 értéken.
Használat:
Az egyik elérhető tengelyobjektum használható ezzel a metódussal:
Tengely |
Parancs |
|---|---|
|
|
|
|
|
|
|
|
Paraméterek |
Leírás |
|---|---|
Ennek a metódusnak nincsenek paraméterei. |
# Turn with the left joystick
remote_control_code_enabled = False
while True:
if controller.axis4.position() > 10:
drivetrain.turn(RIGHT)
elif controller.axis4.position() < -10:
drivetrain.turn(LEFT)
else:
drivetrain.stop()
wait(20, MSEC)
Visszahívások#
.pressed#
.pressed parancs futtat egy függvényt, amikor a megadott gombot megnyomják. Használat után a függvény minden alkalommal automatikusan lefut, amikor a gombot megnyomják.
Használat:
Az egyik elérhető gombobjektum használható ezzel a metódussal:
Gomb |
Parancs |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Paraméter |
Leírás |
|---|---|
|
Egy korábban definiált függvény, amely a megadott gomb minden megnyomásakor lefut. |
|
Opcionális. Egy tuple, amely argumentumokat tartalmaz a visszahívó függvénynek átadandó. További információkért lásd: Események használata paraméterekkel. |
# Drive forward when R1 is pressed
def drive_forward():
drivetrain.drive_for(FORWARD, 200, MM)
controller.buttonR1.pressed(drive_forward)
.released#
.released függvény a megadott gomb elengedésekor futtat egy függvényt. Használat után a függvény minden alkalommal automatikusan lefut, amikor a gombot elengedjük.
Használat:
Az egyik elérhető gombobjektum használható ezzel a metódussal:
Gomb |
Parancs |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Paraméter |
Leírás |
|---|---|
|
Egy korábban definiált function, amely minden alkalommal lefut, amikor a megadott gombot elengedik. |
|
Opcionális. Egy tuple, amely argumentumokat tartalmaz a visszahívó függvénynek átadandó. További információkért lásd: Események használata paraméterekkel. |
# Stop driving when R1 is released
def stop_driving():
drivetrain.stop()
controller.buttonR1.released(stop_driving)
.changed#
.changed Egy függvényt futtat, amikor a joystick pozíciója megváltozik a megadott tengely mentén. Használat után a függvény automatikusan lefut minden alkalommal, amikor a joystick pozíciója megváltozik az adott tengely mentén.
Használat:
Az egyik elérhető tengelyobjektum használható ezzel a metódussal:
Tengely |
Parancs |
|---|---|
|
|
|
|
|
|
|
|
Paraméter |
Leírás |
|---|---|
|
Egy korábban definiált függvény, amely minden alkalommal lefut, amikor a joystick pozíciója a megadott tengely mentén megváltozik. |
|
Opcionális. Egy tuple, amely argumentumokat tartalmaz a visszahívó függvénynek átadandó. További információkért lásd: Események használata paraméterekkel. |
# Play a sound when the left joystick moves
def beep():
brain.play_sound(SoundType.TADA)
controller.axis3.changed(beep)
Konstruktorok#
Controller#
Controller vezérlő létrehoz egy Controller objektumot. A Controller objektum manuális létrehozására csak akkor van szükség, ha a vezérlőt a VEXcode-on kívül konfiguráljuk.
Usage:
Controller()
Paraméterek |
Leírás |
|---|---|
Ennek a konstruktornak nincsenek paraméterei. |
# Create a Controller object
my_controller = Controller()