Controller#

Invoering#

De VEX IQ (2e generatie) controller heeft knoppen en twee joysticks. Met behulp van controllermethoden kunnen knopdrukken worden gecontroleerd, joystickbewegingen worden uitgelezen, geconfigureerde controlleracties worden in- of uitgeschakeld, of functies worden uitgevoerd wanneer er controllergebeurtenissen plaatsvinden.

De IQ (2e generatie) Brain kan worden verbonden met een IQ (2e generatie) of een IQ (1e generatie) Controller. Een IQ (1e generatie) Controller moet een blauwe Smart Radio hebben.

Geconfigureerde controlleracties zijn controllergedragingen die zijn ingesteld in het menu Apparaten. Gebruik remote_control_code_enabled om deze geconfigureerde acties tijdelijk in of uit te schakelen tijdens een project.

Op deze pagina wordt controller als voorbeeldcontrollernaam gebruikt. Vervang dit door uw eigen geconfigureerde naam indien nodig.

Hieronder vindt u een lijst met alle beschikbare methoden:

Actie — Schakel geconfigureerde controlleracties in of uit.

  • remote_control_code_enabled — Hiermee kunnen de controlleracties die in het menu Apparaten zijn geconfigureerd, worden in- of uitgeschakeld.

Getters — Lezen de status van knoppen en de positie van de joystick.

  • .pressing — Geeft aan of een bepaalde knop wordt ingedrukt.

  • .position — Geeft de positie van een opgegeven joystick-as terug.

Callbacks — Voer functies uit wanneer de invoer van de controller verandert.

  • .pressed — Voert een functie uit wanneer een bepaalde knop wordt ingedrukt.

  • .released — Voert een functie uit wanneer een opgegeven knop wordt losgelaten.

  • .changed — Voert een functie uit wanneer de positie van de joystick verandert langs een opgegeven as.

Constructor — Maak handmatig een Controller-object aan.

Actie#

remote_control_code_enabled#

remote_control_code_enabled is een variabele die de controlleracties in- of uitschakelt die zijn geconfigureerd in het menu Apparaten. De geconfigureerde controlleracties zijn standaard ingeschakeld.

Usage:
remote_control_code_enabled = state

Waarde

Beschrijving

True

Maakt door de controller geconfigureerde acties mogelijk.

False

Schakelt de door de controller geconfigureerde acties uit.

# 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

Getters#

.pressing#

.pressing retourneert of een specifieke knop op de controller momenteel is ingedrukt. Deze methode moet worden aangeroepen op een specifiek knopobject, zoals controller.buttonEUp.

  • True — De aangegeven knop wordt ingedrukt.

  • False — De opgegeven knop wordt niet ingedrukt.

Gebruik:
Een van de beschikbare knopobjecten kan met deze methode worden gebruikt:

Een voor- en achterkant van de IQ 2e generatie controller met alle knoppen geel gemarkeerd. Op het oppervlak van de controller bevinden zich twee joystickknoppen in de linker- en rechterbovenhoek, met E omhoog en omlaag onder de linker joystick en F omhoog en omlaag onder de rechter. Aan de achterkant van de controller bevinden zich L omhoog en omlaag en R omhoog en omlaag aan respectievelijk de linker- en rechterkant.

Knop

Commando

buttonEDown

controller.buttonEDown.pressing() — De E ▼ knop

buttonEUp

controller.buttonEUp.pressing() — De E ▲ knop

buttonFDown

controller.buttonFDown.pressing() — De F ▼ knop

buttonFUp

controller.buttonFUp.pressing() — De F ▲ knop

buttonL3

controller.buttonL3.pressing() — De linker joystick-knop, alleen voor IQ (2e generatie) controllers

buttonLDown

controller.buttonLDown.pressing() — De L ▼ knop

buttonLUp

controller.buttonLUp.pressing() — De L ▲ knop

buttonR3

controller.buttonR3.pressing() — De rechter joystick-knop, alleen voor IQ (2e generatie) controllers

buttonRDown

controller.buttonRDown.pressing() — De R ▼ knop

buttonRUp

controller.buttonRUp.pressing() — De R ▲ knop

Parameters

Beschrijving

Deze methode heeft geen parameters.

# Turn right while E Up is held
while True:
    if controller.buttonEUp.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

.position retourneert de positie van een joystick-as als een getal van -100 tot 100.

Deze methode moet worden aangeroepen op een specifiek asobject, zoals controller.axisA.

Gebruik:
Een van de beschikbare asobjecten kan met deze methode worden gebruikt:

De IQ 2e generatie controller met de vier joystickassen gemarkeerd. Op de linker joystick is as A verticaal en as B horizontaal. Op de rechter joystick is as C horizontaal en as D verticaal.

As

Commando

axisA

controller.axisA.position() — De verticale as van de linker joystick

axisB

controller.axisB.position() — De horizontale as van de linker joystick

axisC

controller.axisC.position() — De horizontale as van de rechter joystick

axisD

controller.axisD.position() — De verticale as van de rechter joystick

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

Terugbelverzoeken#

.pressed#

.pressed voert een functie uit wanneer de opgegeven knop wordt ingedrukt. Zodra deze is gebruikt, wordt de functie automatisch uitgevoerd elke keer dat die knop wordt ingedrukt.

Gebruik:
Een van de beschikbare knopobjecten kan met deze methode worden gebruikt:

Een voor- en achterkant van de IQ 2e generatie controller met alle knoppen geel gemarkeerd. Op het oppervlak van de controller bevinden zich twee joystickknoppen in de linker- en rechterbovenhoek, met E omhoog en omlaag onder de linker joystick en F omhoog en omlaag onder de rechter. Aan de achterkant van de controller bevinden zich L omhoog en omlaag en R omhoog en omlaag aan respectievelijk de linker- en rechterkant.

Knop

Commando

buttonEDown

controller.buttonEDown.pressed(callback, arg) — De E ▼ knop

buttonEUp

controller.buttonEUp.pressed(callback, arg) — De E ▲ knop

buttonFDown

controller.buttonFDown.pressed(callback, arg) — De F ▼-knop

buttonFUp

controller.buttonFUp.pressed(callback, arg) — De F ▲-knop

buttonL3

controller.buttonL3.pressed(callback, arg) — De linker joystick-knop, alleen voor IQ (2e generatie) controllers

buttonLDown

controller.buttonLDown.pressed(callback, arg) — De L ▼ knop

buttonLUp

controller.buttonLUp.pressed(callback, arg) — De L ▲ knop

buttonR3

controller.buttonR3.pressed(callback, arg) — De rechter joystick-knop, alleen voor IQ (2e generatie) controllers

buttonRDown

controller.buttonRDown.pressed(callback, arg) — De R ▼ knop

buttonRUp

controller.buttonRUp.pressed(callback, arg) — De R ▲ knop

Parameter

Beschrijving

callback

Een eerder gedefinieerde functie die elke keer wordt uitgevoerd wanneer de opgegeven knop wordt ingedrukt.

arg

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Events gebruiken met parameters voor meer informatie.

# Drive forward when E Up is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 100, MM)

controller.buttonEUp.pressed(drive_forward)

.released#

.released voert een functie uit wanneer de opgegeven knop wordt losgelaten. Zodra deze is gebruikt, wordt de functie automatisch uitgevoerd elke keer dat die knop wordt losgelaten.

Gebruik:
Een van de beschikbare knopobjecten kan met deze methode worden gebruikt:

Een voor- en achterkant van de IQ 2e generatie controller met alle knoppen geel gemarkeerd. Op het oppervlak van de controller bevinden zich twee joystickknoppen in de linker- en rechterbovenhoek, met E omhoog en omlaag onder de linker joystick en F omhoog en omlaag onder de rechter. Aan de achterkant van de controller bevinden zich L omhoog en omlaag en R omhoog en omlaag aan respectievelijk de linker- en rechterkant.

Knop

Commando

buttonEDown

controller.buttonEDown.released(callback, arg) — De E ▼ knop

buttonEUp

controller.buttonEUp.released(callback, arg) — De E ▲ knop

buttonFDown

controller.buttonFDown.released(callback, arg) — De F ▼-knop

buttonFUp

controller.buttonFUp.released(callback, arg) — De F ▲-knop

buttonL3

controller.buttonL3.released(callback, arg) — De linker joystick-knop, alleen voor IQ (2e generatie) controllers

buttonLDown

controller.buttonLDown.released(callback, arg) — De L ▼ knop

buttonLUp

controller.buttonLUp.released(callback, arg) — De L ▲ knop

buttonR3

controller.buttonR3.released(callback, arg) — De rechter joystick-knop, alleen voor IQ (2e generatie) controllers

buttonRDown

controller.buttonRDown.released(callback, arg) — De R ▼ knop

buttonRUp

controller.buttonRUp.released(callback, arg) — De R ▲ knop

Parameter

Beschrijving

callback

Een eerder gedefinieerde functie die elke keer wordt uitgevoerd wanneer de opgegeven knop wordt losgelaten.

arg

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Events gebruiken met parameters voor meer informatie.

# Stop driving when E Up is released
def stop_driving():
    drivetrain.stop()

controller.buttonEUp.released(stop_driving)

.changed#

.changed voert een functie uit wanneer de positie van de joystick verandert langs de opgegeven as. Eenmaal gebruikt, wordt de functie automatisch uitgevoerd telkens wanneer de positie van de joystick langs die as verandert.

Gebruik:
Een van de beschikbare asobjecten kan met deze methode worden gebruikt:

De IQ 2e generatie controller met de vier joystickassen gemarkeerd. Op de linker joystick is as A verticaal en as B horizontaal. Op de rechter joystick is as C horizontaal en as D verticaal.

As

Commando

axisA

controller.axisA.changed(callback, arg) — De verticale as van de linker joystick

axisB

controller.axisB.changed(callback, arg) — De horizontale as van de linker joystick

axisC

controller.axisC.changed(callback, arg) — De horizontale as van de rechter joystick

axisD

controller.axisD.changed(callback, arg) — De verticale as van de rechter joystick

Parameter

Beschrijving

callback

Een eerder gedefinieerde functie die elke keer wordt uitgevoerd wanneer de positie van de joystick verandert langs de opgegeven as.

arg

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Events gebruiken met parameters voor meer informatie.

# Play a sound when the right joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axisD.changed(beep)

Constructeurs#

Controller#

Controller maakt een Controller-object aan. Het handmatig aanmaken van een Controller-object is alleen nodig bij het configureren van een controller buiten VEXcode.

Usage:
Controller()

Parameters

Beschrijving

Deze constructor heeft geen parameters.

# Create a Controller object
my_controller = Controller()