Regler#

Einführung#

Der VEX IQ (2. Generation) Controller verfügt über Tasten und zwei Joysticks. Mit den Controller-Methoden lassen sich Tastendrücke überprüfen, Joystick-Bewegungen auslesen, konfigurierte Controller-Aktionen aktivieren oder deaktivieren sowie Funktionen bei Controller-Ereignissen ausführen.

Das IQ-Steuergerät (2. Generation) kann entweder mit einem IQ-Controller (2. Generation) oder einem IQ-Controller (1. Generation) verbunden werden. Ein IQ-Controller (1. Generation) muss über ein installiertes blaues Smart Radio verfügen.

Konfigurierte Controller-Aktionen sind im Menü „Geräte“ festgelegte Controller-Verhaltensweisen. Verwenden Sie remote_control_code_enabled , um diese konfigurierten Aktionen während eines Projekts vorübergehend zu aktivieren oder zu deaktivieren.

Diese Seite verwendet controller als Beispiel-Controllernamen. Ersetzen Sie diesen bei Bedarf durch Ihren eigenen konfigurierten Namen.

Nachfolgend finden Sie eine Liste aller verfügbaren Methoden:

Aktion – Konfigurierte Controller-Aktionen aktivieren oder deaktivieren.

Getter – Tastenzustände und Joystick-Positionen auslesen.

  • .pressing — Gibt zurück, ob eine bestimmte Taste gedrückt wird.

  • .position — Gibt die Position einer angegebenen Joystick-Achse zurück.

Callbacks – Funktionen, die bei Änderungen der Controller-Eingabe ausgeführt werden.

  • .pressed — Führt eine Funktion aus, wenn eine bestimmte Taste gedrückt wird.

  • .released — Führt eine Funktion aus, wenn eine bestimmte Taste losgelassen wird.

  • .changed — Führt eine Funktion aus, wenn sich die Position des Joysticks entlang einer bestimmten Achse ändert.

Konstruktor – Manuelles Erstellen eines Controller-Objekts.

Aktion#

remote_control_code_enabled#

Die Variable „remote_control_code_enabled“ remote_control_code_enabled aktiviert oder deaktiviert die im Menü „Geräte“ konfigurierten Controller-Aktionen. Standardmäßig sind die konfigurierten Controller-Aktionen aktiviert.

Usage:
remote_control_code_enabled = state

Wert

Beschreibung

True

Aktiviert die vom Controller konfigurierten Aktionen.

False

Deaktiviert die vom Controller konfigurierten Aktionen.

# 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

Getter#

.pressing#

.pressing returns whether a specific button on the controller is currently being pressed. This method must be called on a specific button object, such as controller.buttonEUp.

  • True — Die angegebene Taste wird gedrückt.

  • False — Die angegebene Taste wird nicht gedrückt.

Verwendung:
Eines der verfügbaren Schaltflächenobjekte kann mit dieser Methode verwendet werden:

Vorder- und Rückseite des IQ-Controllers der 2. Generation, alle Tasten gelb hervorgehoben. Die Oberfläche des Controllers verfügt über zwei Joystick-Tasten in den oberen Ecken, links und rechts, mit den Tasten E (oben/unten) unter dem linken und F (oben/unten) unter dem rechten Joystick. Auf der Rückseite des Controllers befinden sich links und rechts die Tasten L (oben/unten) und R (oben/unten).

Taste

Befehl

buttonEDown

controller.buttonEDown.pressing() — Die E ▼-Taste

buttonEUp

controller.buttonEUp.pressing() — Die E ▲-Taste

buttonFDown

controller.buttonFDown.pressing() — Die F ▼-Taste

buttonFUp

controller.buttonFUp.pressing() — Die F ▲-Taste

buttonL3

controller.buttonL3.pressing() — Die linke Joystick-Taste, nur IQ-Controller (2. Generation)

buttonLDown

controller.buttonLDown.pressing() — Die L ▼-Taste

buttonLUp

controller.buttonLUp.pressing() — Die L ▲-Taste

buttonR3

controller.buttonR3.pressing() — Die rechte Joystick-Taste, nur IQ-Controller (2. Generation)

buttonRDown

controller.buttonRDown.pressing() — Die R ▼-Taste

buttonRUp

controller.buttonRUp.pressing() — Die R ▲-Taste

Parameter

Beschreibung

Diese Methode hat keine Parameter.

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

    wait(20, MSEC)

.position#

.position gibt die Position einer Joystick-Achse als Zahl von -100 bis 100 zurück.

Diese Methode muss für ein bestimmtes Achsenobjekt aufgerufen werden, z. B. controller.axisA.

Verwendung:
Mit dieser Methode kann eines der verfügbaren Achsenobjekte verwendet werden:

Der IQ-Controller der 2. Generation mit den vier hervorgehobenen Joystick-Achsen. Beim linken Joystick ist Achse A vertikal und Achse B horizontal. Beim rechten Joystick ist Achse C horizontal und Achse D vertikal.

Achse

Befehl

axisA

controller.axisA.position() — Die vertikale Achse des linken Joysticks

axisB

controller.axisB.position() — Die horizontale Achse des linken Joysticks

axisC

controller.axisC.position() — Die horizontale Achse des rechten Joysticks

axisD

controller.axisD.position() — Die vertikale Achse des rechten Joysticks

Parameter

Beschreibung

Diese Methode hat keine Parameter.

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

Rückrufe#

.pressed#

.pressed führt eine Funktion aus, wenn die angegebene Taste gedrückt wird. Nach der Verwendung wird die Funktion bei jedem Tastendruck automatisch ausgeführt.

Verwendung:
Eines der verfügbaren Schaltflächenobjekte kann mit dieser Methode verwendet werden:

Vorder- und Rückseite des IQ-Controllers der 2. Generation, alle Tasten gelb hervorgehoben. Die Oberfläche des Controllers verfügt über zwei Joystick-Tasten in den oberen Ecken, links und rechts, mit den Tasten E (oben/unten) unter dem linken und F (oben/unten) unter dem rechten Joystick. Auf der Rückseite des Controllers befinden sich links und rechts die Tasten L (oben/unten) und R (oben/unten).

Taste

Befehl

buttonEDown

controller.buttonEDown.pressed(callback, arg) — Die E ▼-Taste

buttonEUp

controller.buttonEUp.pressed(callback, arg) — Die E ▲-Taste

buttonFDown

controller.buttonFDown.pressed(callback, arg) — Die F ▼-Taste

buttonFUp

controller.buttonFUp.pressed(callback, arg) — Die F ▲-Taste

buttonL3

controller.buttonL3.pressed(callback, arg) — Die linke Joystick-Taste, nur IQ-Controller (2. Generation)

buttonLDown

controller.buttonLDown.pressed(callback, arg) — Die L ▼-Taste

buttonLUp

controller.buttonLUp.pressed(callback, arg) — Die L ▲-Taste

buttonR3

controller.buttonR3.pressed(callback, arg) — Die rechte Joystick-Taste, nur IQ-Controller (2. Generation)

buttonRDown

controller.buttonRDown.pressed(callback, arg) — Die R ▼-Taste

buttonRUp

controller.buttonRUp.pressed(callback, arg) — Die R ▲-Taste

Parameter

Beschreibung

callback

Eine zuvor definierte Funktion, die jedes Mal ausgeführt wird, wenn die angegebene Taste gedrückt wird.

arg

Optional. Ein Tupel mit Argumenten, die an die Callback-Funktion übergeben werden sollen. Weitere Informationen finden Sie unter Verwenden von Ereignissen mit Parametern.

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

controller.buttonEUp.pressed(drive_forward)

.released#

.released führt eine Funktion aus, sobald die angegebene Taste losgelassen wird. Nach der Verwendung wird die Funktion automatisch jedes Mal ausgeführt, wenn die Taste losgelassen wird.

Verwendung:
Eines der verfügbaren Schaltflächenobjekte kann mit dieser Methode verwendet werden:

Vorder- und Rückseite des IQ-Controllers der 2. Generation, alle Tasten gelb hervorgehoben. Die Oberfläche des Controllers verfügt über zwei Joystick-Tasten in den oberen Ecken, links und rechts, mit den Tasten E (oben/unten) unter dem linken und F (oben/unten) unter dem rechten Joystick. Auf der Rückseite des Controllers befinden sich links und rechts die Tasten L (oben/unten) und R (oben/unten).

Taste

Befehl

buttonEDown

controller.buttonEDown.released(callback, arg) — Die E ▼-Taste

buttonEUp

controller.buttonEUp.released(callback, arg) — Die E ▲-Taste

buttonFDown

controller.buttonFDown.released(callback, arg) — Die F ▼-Taste

buttonFUp

controller.buttonFUp.released(callback, arg) — Die F ▲-Taste

buttonL3

controller.buttonL3.released(callback, arg) — Die linke Joystick-Taste, nur IQ-Controller (2. Generation)

buttonLDown

controller.buttonLDown.released(callback, arg) — Die L ▼-Taste

buttonLUp

controller.buttonLUp.released(callback, arg) — Die L ▲-Taste

buttonR3

controller.buttonR3.released(callback, arg) — Die rechte Joystick-Taste, nur IQ-Controller (2. Generation)

buttonRDown

controller.buttonRDown.released(callback, arg) — Die R ▼-Taste

buttonRUp

controller.buttonRUp.released(callback, arg) — Die R ▲-Taste

Parameter

Beschreibung

callback

Eine zuvor definierte Funktion, die jedes Mal ausgeführt wird, wenn die angegebene Taste losgelassen wird.

arg

Optional. Ein Tupel mit Argumenten, die an die Callback-Funktion übergeben werden sollen. Weitere Informationen finden Sie unter Verwenden von Ereignissen mit Parametern.

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

controller.buttonEUp.released(stop_driving)

.changed#

Die Option .changed ruft eine Funktion auf, sobald sich die Position des Joysticks entlang der angegebenen Achse ändert. Nach der ersten Verwendung wird die Funktion automatisch bei jeder Positionsänderung des Joysticks auf dieser Achse ausgeführt.

Verwendung:
Mit dieser Methode kann eines der verfügbaren Achsenobjekte verwendet werden:

Der IQ-Controller der 2. Generation mit den vier hervorgehobenen Joystick-Achsen. Beim linken Joystick ist Achse A vertikal und Achse B horizontal. Beim rechten Joystick ist Achse C horizontal und Achse D vertikal.

Achse

Befehl

axisA

controller.axisA.changed(callback, arg) — Die vertikale Achse des linken Joysticks

axisB

controller.axisB.changed(callback, arg) — Die horizontale Achse des linken Joysticks

axisC

controller.axisC.changed(callback, arg) — Die horizontale Achse des rechten Joysticks

axisD

controller.axisD.changed(callback, arg) — Die vertikale Achse des rechten Joysticks

Parameter

Beschreibung

callback

Eine zuvor definierte Funktion, die jedes Mal ausgeführt wird, wenn sich die Position des Joysticks entlang der angegebenen Achse ändert.

arg

Optional. Ein Tupel mit Argumenten, die an die Callback-Funktion übergeben werden sollen. Weitere Informationen finden Sie unter Verwenden von Ereignissen mit Parametern.

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

controller.axisD.changed(beep)

Konstruktoren#

Controller#

Controller erstellt ein Controller-Objekt. Die manuelle Erstellung eines Controller-Objekts ist nur erforderlich, wenn ein Controller außerhalb von VEXcode konfiguriert wird.

Usage:
Controller()

Parameter

Beschreibung

Dieser Konstruktor hat keine Parameter.

# Create a Controller object
my_controller = Controller()