Kontroller#

Introduktion#

V5-kontrollen har knappar, två joysticks, en rumblemotor och en skärm. Kontrollmetoder kan användas för att kontrollera knapptryckningar, läsa av joystickrörelser, rumla kontrollen, aktivera eller inaktivera konfigurerade kontrollåtgärder, köra funktioner när kontrollhändelser inträffar eller visa text på kontrollskärmen.

Konfigurerade kontrollåtgärder är kontrollbeteenden som ställs in i menyn Enheter. 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_1 som exempelnamn för kontrollenheten. Ersätt det med ditt eget konfigurerade namn efter behov.

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

Åtgärder — Rulla kontrollenheten eller aktivera/avaktivera konfigurerade kontrollåtgärder.

  • rumble — Spelar upp ett rumble-mönster på kontrollenheten.

  • remote_control_code_enabled — Aktiverar eller inaktiverar kontrollfunktioner som konfigurerats i menyn Enheter.

Skärm — Visar text och siffror på kontrollskärmen.

  • print — Visar text, siffror eller variabelvärden på kontrollenhetens skärm.

  • set_cursor — Flyttar markören till en angiven rad och kolumn på kontrollskärmen.

  • column — Returnerar den aktuella markörkolumnen på kontrollskärmen.

  • row — Returnerar den aktuella markörraden på kontrollskärmen.

  • clear_screen — Rensar kontrollskärmen.

  • clear_row — Rensar en rad på kontrollskärmen.

  • next_row — Flyttar markören till nästa rad på kontrollskärmen.

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.

Åtgärder#

rumble#

rumble spelar ett rumblemönster på Controllern. I mönstersträngen är punkter korta rumblesignaler, bindestreck är långa rumblesignaler och mellanslag är pauser.

Usage:
controller_1.rumble(pattern)

Parameter

Beskrivning

pattern

En sträng bestående av punkter, bindestreck och mellanslag som representerar mullermönstret.

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

remote_control_code_enabled#

remote_control_code_enabled är en variabel som aktiverar eller inaktiverar kontrollfunktioner som konfigurerats i menyn Enheter. Kontrollfunktioner som konfigurerats är aktiverade som standard.

Usage:
remote_control_code_enabled = state

Värde

Beskrivning

True

Aktiverar kontrollenhetskonfigurerade åtgärder.

False

Inaktiverar kontrollenhetens konfigurerade åtgärder.

# 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

Skärm#

V5-kontrollens skärm har 3 rader och 19 kolumner för visning av text och siffror.

En skärmdump av V5-styrenhetens skärm som visar raderna och kolumnerna i det utskrivbara området. Rad 1 Kolumn 1 börjar i det övre vänstra hörnet och rad 3, kolumn 19 finns i det nedre högra hörnet.

print#

controller_1.screen.print visar text, siffror eller variabelvärden på kontrollenhetens skärm med hjälp av markörens aktuella position.

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

Parameter

Beskrivning

value

Texten, numret eller variabelvärdet som ska visas på kontrollenhetens skärm. Mer än ett värde kan skrivas ut genom att separera värdena med kommatecken.

sep

Valfritt. En sträng som placeras mellan värden. Detta måste skrivas som ett nyckelordsargument, till exempel sep=”- “. Standardvärdet är ” “.

precision

Valfritt. Antalet decimaler som ska visas vid utskrift av enkla tal. Detta måste skrivas som ett nyckelordsargument, till exempel precision=2Standardvärdet är 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 flyttar markören till en angiven rad och kolumn på kontrollenhetens skärm. Nästa utskrivna värde visas på den positionen.

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

Parameter

Beskrivning

row

Markörens rad, från 1 till 3.

col

Markörens kolumn, från 1 till 19.

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

column#

column returnerar den aktuella kolumnen där texten kommer att skrivas ut på kontrollenhetens skärm.

Usage:
controller_1.screen.column()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

row#

row returnerar den aktuella raden där texten kommer att skrivas ut på kontrollenhetens skärm.

Usage:
controller_1.screen.row()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

clear_screen#

clear_screen rensar kontrollskärmen och flyttar markören tillbaka till startpositionen.

Usage:
controller_1.screen.clear_screen()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 rensar en rad på kontrollskärmen.

Usage:
controller_1.screen.clear_row(row)

Parameter

Beskrivning

row

Valfritt. Raden som ska rensas, från 1 till 3Om ingen rad anges rensas den aktuella markörraden.

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

next_row#

next_row flyttar markören till kolumn 1 på nästa rad i kontrollskärmen. Nästa utskrivna värde visas på den raden.

Usage:
controller_1.screen.next_row()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

Getters#

.pressing#

.pressing returnerar om en specifik knapp på kontrollenheten trycks ned för närvarande. Denna metod måste anropas på ett specifikt knappobjekt, till exempel controller_1.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 baksidan av V5-kontrollen med knapparna markerade i gult. På kontrollens yta finns uppåt-, nedåt-, vänster- och högerpilknappar till vänster, och X-, A-, B- och Y-knappar medsols från klockan 12 till höger. På baksidan av kontrollen finns L1, L2, R1 och R2 på vänster respektive höger sida.

Knapp

Kommando

buttonA

controller_1.buttonA.pressing() — A-knappen

buttonB

controller_1.buttonB.pressing() — B-knappen

buttonX

controller_1.buttonX.pressing() — X-knappen

buttonY

controller_1.buttonY.pressing() — Y-knappen

buttonDown

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

buttonUp

controller_1.buttonUp.pressing() — Upp-knappen

buttonLeft

controller_1.buttonLeft.pressing() — Vänsterknappen

buttonRight

controller_1.buttonRight.pressing() — Höger-knappen

buttonL1

controller_1.buttonL1.pressing() — L1-knappen

buttonL2

controller_1.buttonL2.pressing() — L2-knappen

buttonR1

controller_1.buttonR1.pressing() — R1-knappen

buttonR2

controller_1.buttonR2.pressing() — R2-knappen

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

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

En VEX V5-styrenhet med axlarna runt joystickarna märkta. Axel 1 och 2 är runt den högra joysticken, och axel 3 och 4 är runt den vänstra.

Axel

Kommando

axis1

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

axis2

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

axis3

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

axis4

controller_1.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_1.axis4.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller_1.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 baksidan av V5-kontrollen med knapparna markerade i gult. På kontrollens yta finns uppåt-, nedåt-, vänster- och högerpilknappar till vänster, och X-, A-, B- och Y-knappar medsols från klockan 12 till höger. På baksidan av kontrollen finns L1, L2, R1 och R2 på vänster respektive höger sida.

Knapp

Kommando

buttonA

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

buttonB

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

buttonX

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

buttonY

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

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — Vänsterknapp

buttonRight

controller_1.buttonRight.pressed(callback, arg) — Höger-knappen

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

controller_1.buttonA.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 baksidan av V5-kontrollen med knapparna markerade i gult. På kontrollens yta finns uppåt-, nedåt-, vänster- och högerpilknappar till vänster, och X-, A-, B- och Y-knappar medsols från klockan 12 till höger. På baksidan av kontrollen finns L1, L2, R1 och R2 på vänster respektive höger sida.

Knapp

Kommando

buttonA

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

buttonB

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

buttonX

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

buttonY

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

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.released(callback, arg) — Vänsterknapp

buttonRight

controller_1.buttonRight.released(callback, arg) — Höger-knappen

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

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

controller_1.buttonA.released(back_up)

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

En VEX V5-styrenhet med axlarna runt joystickarna märkta. Axel 1 och 2 är runt den högra joysticken, och axel 3 och 4 är runt den vänstra.

Axel

Kommando

axis1

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

axis2

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

axis3

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

axis4

controller_1.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 tada_sound():
    brain.play_sound(SoundType.TADA)

controller_1.axis4.changed(tada_sound)

Konstruktörer#

Controller#

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

Usage:
Controller(controller_type)

Parameter

Beskrivning

controller_type

Valfritt. Kontrolltypen som ska skapas: PRIMARY för den primära kontrollenheten ansluten till hjärnan eller PARTNER för den andra kontrollenheten ansluten till hjärnan.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)