Regler#

Einführung#

Der V5-Controller verfügt über Tasten, zwei Joysticks, einen Vibrationsmotor und ein Display. Mit den Controller-Methoden lassen sich Tastendrücke überprüfen, Joystick-Bewegungen auslesen, der Controller vibrieren lassen, konfigurierte Controller-Aktionen aktivieren oder deaktivieren, Funktionen bei Controller-Ereignissen ausführen oder Text auf dem Display anzeigen.

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_1 als Beispielnamen für den Controller. Ersetzen Sie diesen bei Bedarf durch Ihren eigenen, konfigurierten Namen.

Nachfolgend finden Sie eine Liste aller verfügbaren Methoden:

Aktionen – Den Controller vibrieren lassen oder konfigurierte Controller-Aktionen aktivieren/deaktivieren.

  • rumble — Spielt ein Rumble-Muster auf dem Controller ab.

  • remote_control_code_enabled — Aktiviert oder deaktiviert Controller-Aktionen, die im Menü „Geräte“ konfiguriert sind.

Bildschirm – Anzeige von Text und Zahlen auf dem Controller-Bildschirm.

  • print — Zeigt Text, Zahlen oder Variablenwerte auf dem Controller-Bildschirm an.

  • set_cursor — Verschiebt den Cursor auf eine bestimmte Zeile und Spalte auf dem Controller-Bildschirm.

  • column — Gibt die aktuelle Cursorspalte auf dem Controller-Bildschirm zurück.

  • row — Gibt die aktuelle Cursorzeile auf dem Controller-Bildschirm zurück.

  • clear_screen — Löscht den Controller-Bildschirm.

  • clear_row — Löscht eine Zeile auf dem Controller-Bildschirm.

  • next_row — Bewegt den Cursor zur nächsten Zeile auf dem Controller-Bildschirm.

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.

Aktionen#

rumble#

rumble spielt ein Rumble-Muster auf dem Controller ab. In der Musterfolge stehen Punkte für kurze Rumble-Signale, Bindestriche für lange Rumble-Signale und Leerzeichen für Pausen.

Usage:
controller_1.rumble(pattern)

Parameter

Beschreibung

pattern

Eine Zeichenkette aus Punkten, Bindestrichen und Leerzeichen, die das Rumpelmuster darstellt.

# Rumble the Controller with a short-short-long-long pattern
controller_1.rumble("..--")

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.

# Drive forward or backward using the left joystick
remote_control_code_enabled = False

while True:
    if controller_1.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller_1.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use Controller configured actions again
    elif controller_1.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

Bildschirm#

Der Bildschirm des V5-Controllers verfügt über 3 Zeilen und 19 Spalten zur Anzeige von Text und Zahlen.

Screenshot des V5-Controller-Bildschirms, der die Zeilen und Spalten im druckbaren Bereich zeigt. Zeile 1, Spalte 1 beginnt in der oberen linken Ecke, Zeile 3, Spalte 19 befinden sich in der unteren rechten Ecke.

print#

controller_1.screen.print zeigt Text, Zahlen oder Variablenwerte auf dem Controller-Bildschirm an der aktuellen Cursorposition an.

Usage:
controller_1.screen.print(value, sep, precision)

Parameter

Beschreibung

value

Der Text, die Zahl oder der Variablenwert, der auf dem Controller-Bildschirm angezeigt werden soll. Mehrere Werte können durch Kommas getrennt ausgegeben werden.

sep

Optional. Eine Zeichenkette, die zwischen die Werte eingefügt wird. Diese muss als Schlüsselwortargument angegeben werden, z. B. sep=”- “. Der Standardwert ist ” “.

precision

Optional. Die Anzahl der Dezimalstellen, die beim Drucken einfacher Zahlen angezeigt werden sollen. Dies muss als Schlüsselwortargument angegeben werden, z. B. precision=2. Der Standardwert ist 2.

# Print a number on the Controller screen
controller_1.screen.print(1)

# Print multiple numbers separated by hyphens
controller_1.screen.print(1, 2, 3, 4, sep="-")

# Print a number using one decimal place
controller_1.screen.print(1 / 3, precision=1)

set_cursor#

set_cursor wird der Cursor auf die angegebene Zeile und Spalte im Controller-Bildschirm gesetzt. Der nächste ausgegebene Wert erscheint an dieser Position.

Usage:
controller_1.screen.set_cursor(row, col)

Parameter

Beschreibung

row

Die Zeile des Cursors, von 1 bis 3.

col

Die Spalte des Cursors, von 1 bis 19.

# Print text at row 2, column 1
controller_1.screen.set_cursor(2, 1)
controller_1.screen.print("Ready")

column#

column gibt die aktuelle Spalte zurück, in der der Text auf dem Controller-Bildschirm ausgegeben wird.

Usage:
controller_1.screen.column()

Parameter

Beschreibung

Diese Methode hat keine Parameter.

# Print the current column number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.column())

row#

row gibt die aktuelle Zeile zurück, in der der Text auf dem Controller-Bildschirm ausgegeben wird.

Usage:
controller_1.screen.row()

Parameter

Beschreibung

Diese Methode hat keine Parameter.

# Print the current row number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.row())

clear_screen#

clear_screen löscht den Controller-Bildschirm und bewegt den Cursor zurück an die Ausgangsposition.

Usage:
controller_1.screen.clear_screen()

Parameter

Beschreibung

Diese Methode hat keine Parameter.

# Print text, then clear the Controller screen
controller_1.screen.print("VEX V5")
wait(2, SECONDS)
controller_1.screen.clear_screen()

clear_row#

clear_row löscht eine Zeile auf dem Controller-Bildschirm.

Usage:
controller_1.screen.clear_row(row)

Parameter

Beschreibung

row

Optional. Die zu löschende Zeile ( 1 bis 3. Wird keine Zeile angegeben, wird die aktuelle Cursorzeile gelöscht.

# Clear row 2 on the Controller screen
controller_1.screen.clear_row(2)

next_row#

next_row wird der Cursor in die erste Spalte der nächsten Zeile des Controller-Bildschirms bewegt. Der nächste auszugebende Wert erscheint in dieser Zeile.

Usage:
controller_1.screen.next_row()

Parameter

Beschreibung

Diese Methode hat keine Parameter.

# Print on two rows
controller_1.screen.print("VEX V5")
controller_1.screen.next_row()
controller_1.screen.print("Controller")

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_1.buttonA.

  • 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 V5-Controllers mit gelb hervorgehobenen Tasten. Auf der Vorderseite befinden sich links die Pfeiltasten (oben, unten, links, rechts) und rechts die Tasten X, A, B, Y (im Uhrzeigersinn von 12 Uhr aus). Auf der Rückseite befinden sich links und rechts die Tasten L1, L2, R1 und R2.

Taste

Befehl

buttonA

controller_1.buttonA.pressing() — Die A-Taste

buttonB

controller_1.buttonB.pressing() — Die B-Taste

buttonX

controller_1.buttonX.pressing() — Die X-Taste

buttonY

controller_1.buttonY.pressing() — Die Y-Taste

buttonDown

controller_1.buttonDown.pressing() — Die Abwärts-Taste

buttonUp

controller_1.buttonUp.pressing() — Die Aufwärts-Taste

buttonLeft

controller_1.buttonLeft.pressing() — Die linke Taste

buttonRight

controller_1.buttonRight.pressing() — Die rechte Taste

buttonL1

controller_1.buttonL1.pressing() — Die L1-Taste

buttonL2

controller_1.buttonL2.pressing() — Die L2-Taste

buttonR1

controller_1.buttonR1.pressing() — Die R1-Taste

buttonR2

controller_1.buttonR2.pressing() — Die R2-Taste

Parameter

Beschreibung

Diese Methode hat keine Parameter.

# Turn right while L1 is pressed
while True:
    if controller_1.buttonL1.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_1.axis1.

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

Ein VEX V5 Controller mit beschrifteten Achsen um die Joysticks. Achse 1 und 2 befinden sich um den rechten Joystick, Achse 3 und 4 um den linken.

Achse

Befehl

axis1

controller_1.axis1.position() — Die horizontale Achse des rechten Joysticks

axis2

controller_1.axis2.position() — Die vertikale Achse des rechten Joysticks

axis3

controller_1.axis3.position() — Die vertikale Achse des linken Joysticks

axis4

controller_1.axis4.position() — Die horizontale Achse des linken Joysticks

Parameter

Beschreibung

Diese Methode hat keine Parameter.

# Turn with the left joystick
remote_control_code_enabled = False

while True:
    if controller_1.axis4.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller_1.axis4.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 V5-Controllers mit gelb hervorgehobenen Tasten. Auf der Vorderseite befinden sich links die Pfeiltasten (oben, unten, links, rechts) und rechts die Tasten X, A, B, Y (im Uhrzeigersinn von 12 Uhr aus). Auf der Rückseite befinden sich links und rechts die Tasten L1, L2, R1 und R2.

Taste

Befehl

buttonA

controller_1.buttonA.pressed(callback, arg) — Die A-Taste

buttonB

controller_1.buttonB.pressed(callback, arg) — Die B-Taste

buttonX

controller_1.buttonX.pressed(callback, arg) — Die X-Taste

buttonY

controller_1.buttonY.pressed(callback, arg) — Die Y-Taste

buttonDown

controller_1.buttonDown.pressed(callback, arg) — Die Abwärts-Taste

buttonUp

controller_1.buttonUp.pressed(callback, arg) — Die Aufwärts-Taste

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — Die linke Taste

buttonRight

controller_1.buttonRight.pressed(callback, arg) — Die rechte Taste

buttonL1

controller_1.buttonL1.pressed(callback, arg) — Die L1-Taste

buttonL2

controller_1.buttonL2.pressed(callback, arg) — Die L2-Taste

buttonR1

controller_1.buttonR1.pressed(callback, arg) — Die R1-Taste

buttonR2

controller_1.buttonR2.pressed(callback, arg) — Die R2-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 A is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 100, MM)

controller_1.buttonA.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 V5-Controllers mit gelb hervorgehobenen Tasten. Auf der Vorderseite befinden sich links die Pfeiltasten (oben, unten, links, rechts) und rechts die Tasten X, A, B, Y (im Uhrzeigersinn von 12 Uhr aus). Auf der Rückseite befinden sich links und rechts die Tasten L1, L2, R1 und R2.

Taste

Befehl

buttonA

controller_1.buttonA.released(callback, arg) — Die A-Taste

buttonB

controller_1.buttonB.released(callback, arg) — Die B-Taste

buttonX

controller_1.buttonX.released(callback, arg) — Die X-Taste

buttonY

controller_1.buttonY.released(callback, arg) — Die Y-Taste

buttonDown

controller_1.buttonDown.released(callback, arg) — Die Abwärts-Taste

buttonUp

controller_1.buttonUp.released(callback, arg) — Die Aufwärts-Taste

buttonLeft

controller_1.buttonLeft.released(callback, arg) — Die linke Taste

buttonRight

controller_1.buttonRight.released(callback, arg) — Die rechte Taste

buttonL1

controller_1.buttonL1.released(callback, arg) — Die L1-Taste

buttonL2

controller_1.buttonL2.released(callback, arg) — Die L2-Taste

buttonR1

controller_1.buttonR1.released(callback, arg) — Die R1-Taste

buttonR2

controller_1.buttonR2.released(callback, arg) — Die R2-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.

# Drive backward when A is released
def back_up():
    drivetrain.drive_for(REVERSE, 100, MM)

controller_1.buttonA.released(back_up)

.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:

Ein VEX V5 Controller mit beschrifteten Achsen um die Joysticks. Achse 1 und 2 befinden sich um den rechten Joystick, Achse 3 und 4 um den linken.

Achse

Befehl

axis1

controller_1.axis1.changed(callback, arg) — Die horizontale Achse des rechten Joysticks

axis2

controller_1.axis2.changed(callback, arg) — Die vertikale Achse des rechten Joysticks

axis3

controller_1.axis3.changed(callback, arg) — Die vertikale Achse des linken Joysticks

axis4

controller_1.axis4.changed(callback, arg) — Die horizontale Achse des linken 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 left joystick moves
def tada_sound():
    brain.play_sound(SoundType.TADA)

controller_1.axis4.changed(tada_sound)

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

Parameter

Beschreibung

controller_type

Optional. Der zu erstellende Controller-Typ: PRIMARY für den primären Controller, der mit dem Brain verbunden ist, oder PARTNER für den zweiten Controller, der mit dem Brain verbunden ist.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)