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.

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

True

Engedélyezi a vezérlő által konfigurált műveleteket.

False

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:

Az EXP vezérlő eleje és teteje, a joystickokkal, nyílgombokkal és akciógombokkal, sárga színnel kiemelve. A vezérlő felületén két joystick található balra és jobbra, bal oldalon fel és le nyílgombokkal, jobb oldalon pedig A és B gombokkal. A vezérlő tetején bal oldalon az L1 és L2, jobb oldalon pedig az R1 és R2 található.

Gomb

Parancs

buttonA

controller.buttonA.pressing() — Az A gomb

buttonB

controller.buttonB.pressing() — A B gomb

buttonDown

controller.buttonDown.pressing() — A Le gomb

buttonUp

controller.buttonUp.pressing() — A Fel gomb

buttonL1

controller.buttonL1.pressing() — Az L1 gomb

buttonL2

controller.buttonL2.pressing() — Az L2 gomb

buttonL3

controller.buttonL3.pressing() — Az L3 gomb

buttonR1

controller.buttonR1.pressing() — Az R1 gomb

buttonR2

controller.buttonR2.pressing() — Az R2 gomb

buttonR3

controller.buttonR3.pressing() — Az R3 gomb

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:

Az EXP vezérlő előlapja, pirossal kiemelve a joystick tengelyszámai. A vezérlő felületén a bal oldali joystick 4-es tengelyként van jelölve a balra és jobbra mozgáshoz, valamint 3-as tengelyként a fel és le mozgáshoz, míg a jobb oldali joystick 1-es tengelyként van jelölve a balra és jobbra mozgáshoz, illetve 2-es tengelyként a fel és le mozgáshoz.

Tengely

Parancs

axis1

controller.axis1.position() — A jobb joystick vízszintes tengelye

axis2

controller.axis2.position() — A jobb joystick függőleges tengelye

axis3

controller.axis3.position() — A bal oldali joystick függőleges tengelye

axis4

controller.axis4.position() — A bal oldali joystick vízszintes tengelye

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:

Az EXP vezérlő eleje és teteje, a joystickokkal, nyílgombokkal és akciógombokkal, sárga színnel kiemelve. A vezérlő felületén két joystick található balra és jobbra, bal oldalon fel és le nyílgombokkal, jobb oldalon pedig A és B gombokkal. A vezérlő tetején bal oldalon az L1 és L2, jobb oldalon pedig az R1 és R2 található.

Gomb

Parancs

buttonA

controller.buttonA.pressed(callback, arg) — Az A gomb

buttonB

controller.buttonB.pressed(callback, arg) — A B gomb

buttonDown

controller.buttonDown.pressed(callback, arg) — A Le gomb

buttonUp

controller.buttonUp.pressed(callback, arg) — A Fel gomb

buttonL1

controller.buttonL1.pressed(callback, arg) — Az L1 gomb

buttonL2

controller.buttonL2.pressed(callback, arg) — Az L2 gomb

buttonL3

controller.buttonL3.pressed(callback, arg) — Az L3 gomb

buttonR1

controller.buttonR1.pressed(callback, arg) — Az R1 gomb

buttonR2

controller.buttonR2.pressed(callback, arg) — Az R2 gomb

buttonR3

controller.buttonR3.pressed(callback, arg) — Az R3 gomb

Paraméter

Leírás

callback

Egy korábban definiált függvény, amely a megadott gomb minden megnyomásakor lefut.

arg

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:

Az EXP vezérlő eleje és teteje, a joystickokkal, nyílgombokkal és akciógombokkal, sárga színnel kiemelve. A vezérlő felületén két joystick található balra és jobbra, bal oldalon fel és le nyílgombokkal, jobb oldalon pedig A és B gombokkal. A vezérlő tetején bal oldalon az L1 és L2, jobb oldalon pedig az R1 és R2 található.

Gomb

Parancs

buttonA

controller.buttonA.released(callback, arg) — Az A gomb

buttonB

controller.buttonB.released(callback, arg) — A B gomb

buttonDown

controller.buttonDown.released(callback, arg) — A Le gomb

buttonUp

controller.buttonUp.released(callback, arg) — A Fel gomb

buttonL1

controller.buttonL1.released(callback, arg) — Az L1 gomb

buttonL2

controller.buttonL2.released(callback, arg) — Az L2 gomb

buttonL3

controller.buttonL3.released(callback, arg) — Az L3 gomb

buttonR1

controller.buttonR1.released(callback, arg) — Az R1 gomb

buttonR2

controller.buttonR2.released(callback, arg) — Az R2 gomb

buttonR3

controller.buttonR3.released(callback, arg) — Az R3 gomb

Paraméter

Leírás

callback

Egy korábban definiált function, amely minden alkalommal lefut, amikor a megadott gombot elengedik.

arg

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:

Az EXP vezérlő előlapja, pirossal kiemelve a joystick tengelyszámai. A vezérlő felületén a bal oldali joystick 4-es tengelyként van jelölve a balra és jobbra mozgáshoz, valamint 3-as tengelyként a fel és le mozgáshoz, míg a jobb oldali joystick 1-es tengelyként van jelölve a balra és jobbra mozgáshoz, illetve 2-es tengelyként a fel és le mozgáshoz.

Tengely

Parancs

axis1

controller.axis1.changed(callback, arg) — A jobb joystick vízszintes tengelye

axis2

controller.axis2.changed(callback, arg) — A jobb joystick függőleges tengelye

axis3

controller.axis3.changed(callback, arg) — A bal oldali joystick függőleges tengelye

axis4

controller.axis4.changed(callback, arg) — A bal oldali joystick vízszintes tengelye

Paraméter

Leírás

callback

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.

arg

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()