Kontroller#

Introduktion#

VEX IQ-styrenheten (2:a generationen) har knappar och två joysticks. Styrmetoder kan användas för att kontrollera knapptryckningar, läsa av joystickrörelser, aktivera eller inaktivera konfigurerade styrenhetsåtgärder eller köra funktioner när styrenhetshändelser inträffar.

IQ (2:a generationen) Brain kan anslutas till antingen en IQ (2:a generationen) eller en IQ (1:a generationen) Controller. En IQ (1:a generationen) Controller måste ha en blå Smart Radio installerad.

Konfigurerade kontrollåtgärder är kontrollbeteenden som ställs in i Enheter-menyn. Använd remote_control_code_enabled för att tillfälligt aktivera eller inaktivera dessa konfigurerade åtgärder under ett projekt.

Den här sidan använder controller som exempelnamn för controller. Ersätt det med ditt eget konfigurerade namn efter behov.

Nedan följer en lista över alla tillgängliga metoder:

Åtgärd — Aktivera eller inaktivera konfigurerade kontrollåtgärder.

Getters — Läser knappstatus och joystickpositioner.

  • .pressing — Returnerar om en specifik knapp trycks ned.

  • .position — Returnerar positionen för en specificerad joystickaxel.

Återanrop — Kör funktioner när styrenhetens inmatning ändras.

  • .pressed — Kör en funktion när en angiven knapp trycks ned.

  • .released — Kör en funktion när en angiven knapp släpps.

  • .changed — Kör en funktion när joystickens position ändras längs en angiven axel.

Konstruktor — Skapa ett Controller-objekt manuellt.

Handling#

remote_control_code_enabled#

remote_control_code_enabled är en variabel som aktiverar eller inaktiverar kontrollåtgärder som konfigurerats i menyn Enheter. Kontrollkonfigurerade åtgärder är aktiverade som standard.

Usage:
remote_control_code_enabled = state

Värde

Beskrivning

True

Aktiverar kontrollkonfigurerade åtgärder.

False

Inaktiverar kontrollens konfigurerade åtgärder.

# 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 returnerar om en specifik knapp på handkontrollen trycks ned för närvarande. Denna metod måste anropas på ett specifikt knappobjekt, till exempel controller.buttonEUp.

  • True — Den angivna knappen trycks ned.

  • False — Den angivna knappen trycks inte ned.

Användning:
Ett av de tillgängliga knappobjekten kan användas med denna metod:

En fram- och baksidavy av IQ 2:a generationens kontrollenhet med alla knappar markerade gult. Kontrollenhetens yta innehåller två joystickknappar i det övre vänstra och högra hörnet, med E upp och ner under den vänstra joysticken och F upp och ner under den högra. På baksidan av kontrollenheten finns L upp och ner och R upp och ner på vänster respektive höger sida.

Knapp

Kommando

buttonEDown

controller.buttonEDown.pressing() — E ▼-knappen

buttonEUp

controller.buttonEUp.pressing() — E ▲-knappen

buttonFDown

controller.buttonFDown.pressing() — F ▼-knappen

buttonFUp

controller.buttonFUp.pressing() — F ▲-knappen

buttonL3

controller.buttonL3.pressing() — Vänster joystick-knapp, endast IQ-kontrollen (2:a generationen)

buttonLDown

controller.buttonLDown.pressing() — L ▼-knappen

buttonLUp

controller.buttonLUp.pressing() — L ▲-knappen

buttonR3

controller.buttonR3.pressing() — Höger joystick-knapp, endast IQ-kontrollen (2:a generationen)

buttonRDown

controller.buttonRDown.pressing() — R ▼-knappen

buttonRUp

controller.buttonRUp.pressing() — R ▲-knappen

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

    wait(20, MSEC)

.position#

.position returnerar positionen för en joystickaxel som ett tal från -100 till 100.

Den här metoden måste anropas på ett specifikt axelobjekt, till exempel controller.axisA.

Användning:
Ett av de tillgängliga axelobjekten kan användas med denna metod:

IQ 2:a generationens kontrollenhet med de fyra joystickaxlarna markerade. På vänster joystick är axel A vertikal och axel B horisontell. På höger joystick är axel C horisontell och axel D vertikal.

Axel

Kommando

axisA

controller.axisA.position() — Den vänstra joystickens vertikala axel

axisB

controller.axisB.position() — Den vänstra joystickens horisontella axel

axisC

controller.axisC.position() — Den högra joystickens horisontella axel

axisD

controller.axisD.position() — Den högra joystickens vertikala axel

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

Återuppringningar#

.pressed#

.pressed kör en funktion när den angivna knappen trycks ner. När den väl används körs funktionen automatiskt varje gång knappen trycks ner.

Användning:
Ett av de tillgängliga knappobjekten kan användas med denna metod:

En fram- och baksidavy av IQ 2:a generationens kontrollenhet med alla knappar markerade gult. Kontrollenhetens yta innehåller två joystickknappar i det övre vänstra och högra hörnet, med E upp och ner under den vänstra joysticken och F upp och ner under den högra. På baksidan av kontrollenheten finns L upp och ner och R upp och ner på vänster respektive höger sida.

Knapp

Kommando

buttonEDown

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

buttonEUp

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

buttonFDown

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

buttonFUp

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

buttonL3

controller.buttonL3.pressed(callback, arg) — Vänster joystick-knapp, endast IQ-kontrollen (2:a generationen)

buttonLDown

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

buttonLUp

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

buttonR3

controller.buttonR3.pressed(callback, arg) — Höger joystick-knapp, endast IQ-kontrollen (2:a generationen)

buttonRDown

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

buttonRUp

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

Parameter

Beskrivning

callback

En tidigare definierad funktion som ska köras varje gång den angivna knappen trycks ned.

arg

Valfritt. En tupel som innehåller argument som ska skickas till callback-funktionen. Se Använda händelser med parametrar för mer information.

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

controller.buttonEUp.pressed(drive_forward)

.released#

.released kör en funktion när den angivna knappen släpps. När den väl används körs funktionen automatiskt varje gång knappen släpps.

Användning:
Ett av de tillgängliga knappobjekten kan användas med denna metod:

En fram- och baksidavy av IQ 2:a generationens kontrollenhet med alla knappar markerade gult. Kontrollenhetens yta innehåller två joystickknappar i det övre vänstra och högra hörnet, med E upp och ner under den vänstra joysticken och F upp och ner under den högra. På baksidan av kontrollenheten finns L upp och ner och R upp och ner på vänster respektive höger sida.

Knapp

Kommando

buttonEDown

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

buttonEUp

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

buttonFDown

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

buttonFUp

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

buttonL3

controller.buttonL3.released(callback, arg) — Vänster joystick-knapp, endast IQ-kontrollen (2:a generationen)

buttonLDown

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

buttonLUp

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

buttonR3

controller.buttonR3.released(callback, arg) — Höger joystick-knapp, endast IQ-kontrollen (2:a generationen)

buttonRDown

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

buttonRUp

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

Parameter

Beskrivning

callback

En tidigare definierad funktion som ska köras varje gång den angivna knappen släpps.

arg

Valfritt. En tupel som innehåller argument som ska skickas till callback-funktionen. Se Använda händelser med parametrar för mer information.

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

controller.buttonEUp.released(stop_driving)

.changed#

.changed kör en funktion när joystickens position ändras längs den angivna axeln. När den väl används körs funktionen automatiskt varje gång joystickens position ändras längs den axeln.

Användning:
Ett av de tillgängliga axelobjekten kan användas med denna metod:

IQ 2:a generationens kontrollenhet med de fyra joystickaxlarna markerade. På vänster joystick är axel A vertikal och axel B horisontell. På höger joystick är axel C horisontell och axel D vertikal.

Axel

Kommando

axisA

controller.axisA.changed(callback, arg) — Den vänstra joystickens vertikala axel

axisB

controller.axisB.changed(callback, arg) — Den vänstra joystickens horisontella axel

axisC

controller.axisC.changed(callback, arg) — Den högra joystickens horisontella axel

axisD

controller.axisD.changed(callback, arg) — Den högra joystickens vertikala axel

Parameter

Beskrivning

callback

En tidigare definierad funktion som körs varje gång joystickens position ändras längs den angivna axeln.

arg

Valfritt. En tupel som innehåller argument som ska skickas till callback-funktionen. Se Använda händelser med parametrar för mer information.

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

controller.axisD.changed(beep)

Konstruktörer#

Controller#

Controller skapar ett Controller-objekt. Att skapa ett Controller-objekt manuellt behövs endast när en regulator konfigureras utanför VEXcode.

Usage:
Controller()

Parametrar

Beskrivning

Denna konstruktor har inga parametrar.

# Create a Controller object
my_controller = Controller()