vezérlő#

Bevezetés#

A VEX IQ (2. generációs) vezérlő gombokkal és két joystickkal 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.

Az IQ (2. generációs) agy IQ (2. generációs) vagy IQ (1. generációs) vezérlőhöz csatlakozhat. Az IQ (1. generációs) vezérlőhöz kék Smart Radio szükséges.

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.

# Use custom controller code, then re-enable configured actions
remote_control_code_enabled = False

while True:
    if controller.axisA.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axisA.position() < 0:
        drivetrain.drive(REVERSE)
    elif controller.buttonEUp.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 controller.buttonEUp.

  • 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 IQ 2. generációs kontroller elölnézete és hátulnézete, minden gombbal sárgán kiemelve. A kontroller felületén két joystick gomb található a bal felső és a jobb sarokban, az E fel és le gombok a bal joystick alatt, az F fel és le gombok pedig a jobb alatt találhatók. A kontroller hátulján a bal és jobb oldalon található az L fel és le gomb, valamint az R fel és le gomb.

Gomb

Parancs

buttonEDown

controller.buttonEDown.pressing() — Az E ▼ gomb

buttonEUp

controller.buttonEUp.pressing() — Az E ▲ gomb

buttonFDown

controller.buttonFDown.pressing() — Az F ▼ gomb

buttonFUp

controller.buttonFUp.pressing() — Az F ▲ gomb

buttonL3

controller.buttonL3.pressing() — A Bal oldali joystick gomb, csak IQ (2. generációs) kontroller esetén

buttonLDown

controller.buttonLDown.pressing() — Az L ▼ gomb

buttonLUp

controller.buttonLUp.pressing() — Az L ▲ gomb

buttonR3

controller.buttonR3.pressing() — A Jobb joystick gomb, csak IQ (2. generációs) kontroller esetén

buttonRDown

controller.buttonRDown.pressing() — Az R ▼ gomb

buttonRUp

controller.buttonRUp.pressing() — Az R ▲ gomb

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# Turn right while E Up is held
while True:
    if controller.buttonEUp.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 tengelyobjektumon kell meghívni, például controller.axisA értéken.

Használat:
Az egyik elérhető tengelyobjektum használható ezzel a metódussal:

Az IQ 2. generációs vezérlő, a négy joystick tengellyel kiemelve. A bal oldali joysticknál az A tengely függőleges, a B tengely pedig vízszintes. A jobb oldali joysticknál a C tengely vízszintes, a D tengely pedig függőleges.

Tengely

Parancs

axisA

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

axisB

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

axisC

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

axisD

controller.axisD.position() — A jobb joystick függőleges 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.axisB.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.axisB.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 IQ 2. generációs kontroller elölnézete és hátulnézete, minden gombbal sárgán kiemelve. A kontroller felületén két joystick gomb található a bal felső és a jobb sarokban, az E fel és le gombok a bal joystick alatt, az F fel és le gombok pedig a jobb alatt találhatók. A kontroller hátulján a bal és jobb oldalon található az L fel és le gomb, valamint az R fel és le gomb.

Gomb

Parancs

buttonEDown

controller.buttonEDown.pressed(callback, arg) — Az E ▼ gomb

buttonEUp

controller.buttonEUp.pressed(callback, arg) — Az E ▲ gomb

buttonFDown

controller.buttonFDown.pressed(callback, arg) — Az F ▼ gomb

buttonFUp

controller.buttonFUp.pressed(callback, arg) — Az F ▲ gomb

buttonL3

controller.buttonL3.pressed(callback, arg) — A Bal oldali joystick gomb, csak IQ (2. generációs) kontroller esetén

buttonLDown

controller.buttonLDown.pressed(callback, arg) — Az L ▼ gomb

buttonLUp

controller.buttonLUp.pressed(callback, arg) — Az L ▲ gomb

buttonR3

controller.buttonR3.pressed(callback, arg) — A Jobb joystick gomb, csak IQ (2. generációs) kontroller esetén

buttonRDown

controller.buttonRDown.pressed(callback, arg) — Az R ▼ gomb

buttonRUp

controller.buttonRUp.pressed(callback, arg) — Az R ▲ 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 E Up is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 100, MM)

controller.buttonEUp.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 IQ 2. generációs kontroller elölnézete és hátulnézete, minden gombbal sárgán kiemelve. A kontroller felületén két joystick gomb található a bal felső és a jobb sarokban, az E fel és le gombok a bal joystick alatt, az F fel és le gombok pedig a jobb alatt találhatók. A kontroller hátulján a bal és jobb oldalon található az L fel és le gomb, valamint az R fel és le gomb.

Gomb

Parancs

buttonEDown

controller.buttonEDown.released(callback, arg) — Az E ▼ gomb

buttonEUp

controller.buttonEUp.released(callback, arg) — Az E ▲ gomb

buttonFDown

controller.buttonFDown.released(callback, arg) — Az F ▼ gomb

buttonFUp

controller.buttonFUp.released(callback, arg) — Az F ▲ gomb

buttonL3

controller.buttonL3.released(callback, arg) — A Bal oldali joystick gomb, csak IQ (2. generációs) kontroller esetén

buttonLDown

controller.buttonLDown.released(callback, arg) — Az L ▼ gomb

buttonLUp

controller.buttonLUp.released(callback, arg) — Az L ▲ gomb

buttonR3

controller.buttonR3.released(callback, arg) — A Jobb joystick gomb, csak IQ (2. generációs) kontroller esetén

buttonRDown

controller.buttonRDown.released(callback, arg) — Az R ▼ gomb

buttonRUp

controller.buttonRUp.released(callback, arg) — Az R ▲ 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 E Up is released
def stop_driving():
    drivetrain.stop()

controller.buttonEUp.released(stop_driving)

.changed#

.changed függvény akkor futtat le egy függvényt, 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 IQ 2. generációs vezérlő, a négy joystick tengellyel kiemelve. A bal oldali joysticknál az A tengely függőleges, a B tengely pedig vízszintes. A jobb oldali joysticknál a C tengely vízszintes, a D tengely pedig függőleges.

Tengely

Parancs

axisA

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

axisB

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

axisC

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

axisD

controller.axisD.changed(callback, arg) — A jobb joystick függőleges 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 right joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axisD.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()