Kontroller#

Introduktion#

VEX EXP-styrenheten 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.

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.

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

while True:
    if controller.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use controller configured actions again
    elif controller.buttonA.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.buttonA.

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

Framsidan och ovansidan av EXP-kontrollen med joysticks, pilknappar och actionknappar markerade i gult. På kontrollens yta finns två joysticks till vänster och höger, med uppåt- och nedåtpilar till vänster och A- och B-knappar till höger. På kontrollens ovansida finns L1 och L2 på vänster sida och R1 och R2 på höger sida.

Knapp

Kommando

buttonA

controller.buttonA.pressing() — A-knappen

buttonB

controller.buttonB.pressing() — B-knappen

buttonDown

controller.buttonDown.pressing() — Nedåt-knappen

buttonUp

controller.buttonUp.pressing() — Upp-knappen

buttonL1

controller.buttonL1.pressing() — L1-knappen

buttonL2

controller.buttonL2.pressing() — L2-knappen

buttonL3

controller.buttonL3.pressing() — L3-knappen

buttonR1

controller.buttonR1.pressing() — R1-knappen

buttonR2

controller.buttonR2.pressing() — R2-knappen

buttonR3

controller.buttonR3.pressing() — R3-knappen

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

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

Framsidan av EXP-kontrollen med joystickens axelnummer markerade med rött. På kontrollens yta är den vänstra joysticken märkt som axel 4 för vänster- och högerrörelse och axel 3 för upp- och nedrörelse, medan den högra joysticken är märkt som axel 1 för vänster- och högerrörelse och axel 2 för upp- och nedrörelse.

Axel

Kommando

axis1

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

axis2

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

axis3

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

axis4

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

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# Turn with the left joystick
remote_control_code_enabled = False

while True:
    if controller.axis4.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.axis4.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:

Framsidan och ovansidan av EXP-kontrollen med joysticks, pilknappar och actionknappar markerade i gult. På kontrollens yta finns två joysticks till vänster och höger, med uppåt- och nedåtpilar till vänster och A- och B-knappar till höger. På kontrollens ovansida finns L1 och L2 på vänster sida och R1 och R2 på höger sida.

Knapp

Kommando

buttonA

controller.buttonA.pressed(callback, arg) — A-knappen

buttonB

controller.buttonB.pressed(callback, arg) — B-knappen

buttonDown

controller.buttonDown.pressed(callback, arg) — Ned-knappen

buttonUp

controller.buttonUp.pressed(callback, arg) — Upp-knappen

buttonL1

controller.buttonL1.pressed(callback, arg) — L1-knappen

buttonL2

controller.buttonL2.pressed(callback, arg) — L2-knappen

buttonL3

controller.buttonL3.pressed(callback, arg) — L3-knappen

buttonR1

controller.buttonR1.pressed(callback, arg) — R1-knappen

buttonR2

controller.buttonR2.pressed(callback, arg) — R2-knappen

buttonR3

controller.buttonR3.pressed(callback, arg) — R3-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 R1 is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 200, MM)

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

Framsidan och ovansidan av EXP-kontrollen med joysticks, pilknappar och actionknappar markerade i gult. På kontrollens yta finns två joysticks till vänster och höger, med uppåt- och nedåtpilar till vänster och A- och B-knappar till höger. På kontrollens ovansida finns L1 och L2 på vänster sida och R1 och R2 på höger sida.

Knapp

Kommando

buttonA

controller.buttonA.released(callback, arg) — A-knappen

buttonB

controller.buttonB.released(callback, arg) — B-knappen

buttonDown

controller.buttonDown.released(callback, arg) — Ned-knappen

buttonUp

controller.buttonUp.released(callback, arg) — Upp-knappen

buttonL1

controller.buttonL1.released(callback, arg) — L1-knappen

buttonL2

controller.buttonL2.released(callback, arg) — L2-knappen

buttonL3

controller.buttonL3.released(callback, arg) — L3-knappen

buttonR1

controller.buttonR1.released(callback, arg) — R1-knappen

buttonR2

controller.buttonR2.released(callback, arg) — R2-knappen

buttonR3

controller.buttonR3.released(callback, arg) — R3-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 R1 is released
def stop_driving():
    drivetrain.stop()

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

Framsidan av EXP-kontrollen med joystickens axelnummer markerade med rött. På kontrollens yta är den vänstra joysticken märkt som axel 4 för vänster- och högerrörelse och axel 3 för upp- och nedrörelse, medan den högra joysticken är märkt som axel 1 för vänster- och högerrörelse och axel 2 för upp- och nedrörelse.

Axel

Kommando

axis1

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

axis2

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

axis3

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

axis4

controller.axis4.changed(callback, arg) — Den vänstra joystickens horisontella 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 left joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

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