Controller#

Invoering#

De V5-controller heeft knoppen, twee joysticks, een trilmotor en een scherm. Met de controllerfuncties kunnen knoppen worden ingedrukt, joystickbewegingen worden geregistreerd, de controller trilt, geconfigureerde controlleracties worden in- of uitgeschakeld, functies worden uitgevoerd wanneer er controllergebeurtenissen plaatsvinden, of tekst op het controllerscherm wordt weergegeven.

Geconfigureerde controlleracties zijn controllergedragingen die zijn ingesteld in het menu Apparaten. Gebruik remote_control_code_enabled om deze geconfigureerde acties tijdelijk in of uit te schakelen tijdens een project.

Op deze pagina wordt controller_1 als voorbeeldcontrollernaam gebruikt. Vervang dit door uw eigen geconfigureerde naam indien nodig.

Hieronder vindt u een lijst met alle beschikbare methoden:

Acties — De controller laten trillen of geconfigureerde controlleracties in-/uitschakelen.

  • rumble — Speelt een trilpatroon af op de controller.

  • remote_control_code_enabled — Hiermee kunnen de controlleracties die in het menu Apparaten zijn geconfigureerd, worden in- of uitgeschakeld.

Scherm — Tekst en cijfers weergeven op het controllerscherm.

  • print — Geeft tekst, getallen of variabele waarden weer op het Controller-scherm.

  • set_cursor — Verplaatst de cursor naar een opgegeven rij en kolom op het Controller-scherm.

  • column — Geeft de huidige cursor-kolom op het Controller-scherm terug.

  • row — Geeft de huidige cursorrij op het Controller-scherm terug.

  • clear_screen — Maakt het controllerscherm leeg.

  • clear_row — Maakt één rij op het Controller-scherm leeg.

  • next_row — Verplaatst de cursor naar de volgende rij op het Controller-scherm.

Getters — Lezen de status van knoppen en de positie van de joystick.

  • .pressing — Geeft aan of een bepaalde knop wordt ingedrukt.

  • .position — Geeft de positie van een opgegeven joystick-as terug.

Callbacks — Voer functies uit wanneer de invoer van de controller verandert.

  • .pressed — Voert een functie uit wanneer een bepaalde knop wordt ingedrukt.

  • .released — Voert een functie uit wanneer een opgegeven knop wordt losgelaten.

  • .changed — Voert een functie uit wanneer de positie van de joystick verandert langs een opgegeven as.

Constructor — Maak handmatig een Controller-object aan.

Acties#

rumble#

rumble speelt een rumble-patroon af op de controller. In de patroonreeks zijn punten korte rumbles, koppeltekens lange rumbles en spaties pauzes.

Usage:
controller_1.rumble(pattern)

Parameter

Beschrijving

pattern

Een reeks bestaande uit punten, koppeltekens en spaties die het rumble-patroon weergeven.

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

remote_control_code_enabled#

remote_control_code_enabled is een variabele die de in het menu Apparaten geconfigureerde controlleracties in- of uitschakelt. De in het menu Apparaten geconfigureerde controlleracties zijn standaard ingeschakeld.

Usage:
remote_control_code_enabled = state

Waarde

Beschrijving

True

Schakelt de door de controller geconfigureerde acties in.

False

Schakelt de door de controller geconfigureerde acties uit.

# 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

Scherm#

Het scherm van de V5-controller heeft 3 rijen en 19 kolommen voor het weergeven van tekst en cijfers.

Een schermafbeelding van het V5-controllerscherm, waarop de rijen en kolommen in het afdrukbare gebied te zien zijn. Rij 1, kolom 1 begint in de linkerbovenhoek en rij 3, kolom 19 bevinden zich in de rechterbenedenhoek.

print#

controller_1.screen.print geeft tekst, getallen of variabele waarden weer op het Controller-scherm met behulp van de huidige cursorpositie.

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

Parameter

Beschrijving

value

De tekst, het getal of de variabele waarde die op het controllerscherm moet worden weergegeven. Er kunnen meerdere waarden worden weergegeven door ze met komma’s te scheiden.

sep

Optioneel. Een tekenreeks die tussen de waarden wordt geplaatst. Deze moet als een sleutelwoordargument worden geschreven, bijvoorbeeld sep=”- “. De standaardwaarde is ” “.

precision

Optioneel. Het aantal decimalen dat moet worden weergegeven bij het afdrukken van eenvoudige getallen. Dit moet worden opgegeven als een sleutelwoordargument, bijvoorbeeld precision=2De standaardwaarde is 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 verplaatst de cursor naar een opgegeven rij en kolom op het Controller-scherm. De volgende afgedrukte waarde verschijnt op die positie.

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

Parameter

Beschrijving

row

De rij van de cursor, van 1 tot 3.

col

De kolom van de cursor, van 1 tot 19.

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

column#

column geeft de huidige kolom weer waar de tekst op het Controller-scherm wordt afgedrukt.

Usage:
controller_1.screen.column()

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

row#

row geeft de huidige regel weer waar de tekst op het Controller-scherm wordt afgedrukt.

Usage:
controller_1.screen.row()

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

clear_screen#

clear_screen wist het scherm van de controller en verplaatst de cursor terug naar de beginpositie.

Usage:
controller_1.screen.clear_screen()

Parameters

Beschrijving

Deze methode heeft geen parameters.

# 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 wist één rij op het Controller-scherm.

Usage:
controller_1.screen.clear_row(row)

Parameter

Beschrijving

row

Optioneel. De te wissen rij, van 1 tot 3Als er geen rij wordt opgegeven, wordt de huidige cursorrij gewist.

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

next_row#

next_row verplaatst de cursor naar kolom 1 op de volgende regel van het Controller-scherm. De volgende afgedrukte waarde verschijnt op die regel.

Usage:
controller_1.screen.next_row()

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

Getters#

.pressing#

.pressing retourneert of een specifieke knop op de controller momenteel is ingedrukt. Deze methode moet worden aangeroepen op een specifiek knopobject, zoals controller_1.buttonA.

  • True — De aangegeven knop wordt ingedrukt.

  • False — De opgegeven knop wordt niet ingedrukt.

Gebruik:
Een van de beschikbare knopobjecten kan met deze methode worden gebruikt:

De voor- en achterkant van de V5-controller met de knoppen geel gemarkeerd. Aan de linkerkant van de controller bevinden zich de pijlknoppen omhoog, omlaag, naar links en naar rechts, en aan de rechterkant de knoppen X, A, B, Y met de klok mee vanaf 12 uur. Aan de achterkant van de controller bevinden zich de knoppen L1, L2, R1 en R2 aan respectievelijk de linker- en rechterkant.

Knop

Commando

buttonA

controller_1.buttonA.pressing() — De A-knop

buttonB

controller_1.buttonB.pressing() — De B-knop

buttonX

controller_1.buttonX.pressing() — De X-knop

buttonY

controller_1.buttonY.pressing() — De Y-knop

buttonDown

controller_1.buttonDown.pressing() — De Omlaag-knop

buttonUp

controller_1.buttonUp.pressing() — De Omhoog-knop

buttonLeft

controller_1.buttonLeft.pressing() — De linker knop

buttonRight

controller_1.buttonRight.pressing() — De Rechter knop

buttonL1

controller_1.buttonL1.pressing() — De L1-knop

buttonL2

controller_1.buttonL2.pressing() — De L2-knop

buttonR1

controller_1.buttonR1.pressing() — De R1-knop

buttonR2

controller_1.buttonR2.pressing() — De R2-knop

Parameters

Beschrijving

Deze methode heeft geen parameters.

# Turn right while L1 is pressed
while True:
    if controller_1.buttonL1.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

.position retourneert de positie van een joystick-as als een getal van -100 tot 100.

Deze methode moet worden aangeroepen op een specifiek asobject, zoals controller_1.axis1.

Gebruik:
Een van de beschikbare asobjecten kan met deze methode worden gebruikt:

Een VEX V5-controller met de assen rond de joysticks gelabeld. As 1 en 2 bevinden zich rond de rechter joystick en as 3 en 4 rond de linker.

As

Commando

axis1

controller_1.axis1.position() — De horizontale as van de rechter joystick

axis2

controller_1.axis2.position() — De verticale as van de rechter joystick

axis3

controller_1.axis3.position() — De verticale as van de linker joystick

axis4

controller_1.axis4.position() — De horizontale as van de linker joystick

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

Terugbelverzoeken#

.pressed#

.pressed voert een functie uit wanneer de opgegeven knop wordt ingedrukt. Zodra deze is gebruikt, wordt de functie automatisch uitgevoerd elke keer dat die knop wordt ingedrukt.

Gebruik:
Een van de beschikbare knopobjecten kan met deze methode worden gebruikt:

De voor- en achterkant van de V5-controller met de knoppen geel gemarkeerd. Aan de linkerkant van de controller bevinden zich de pijlknoppen omhoog, omlaag, naar links en naar rechts, en aan de rechterkant de knoppen X, A, B, Y met de klok mee vanaf 12 uur. Aan de achterkant van de controller bevinden zich de knoppen L1, L2, R1 en R2 aan respectievelijk de linker- en rechterkant.

Knop

Commando

buttonA

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

buttonB

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

buttonX

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

buttonY

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

buttonDown

controller_1.buttonDown.pressed(callback, arg) — De Omlaag-knop

buttonUp

controller_1.buttonUp.pressed(callback, arg) — De Omhoog-knop

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — De Linker knop

buttonRight

controller_1.buttonRight.pressed(callback, arg) — De Rechter knop

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

controller_1.buttonR2.pressed(callback, arg) — De R2-knop

Parameter

Beschrijving

callback

Een eerder gedefinieerde functie die elke keer wordt uitgevoerd wanneer de opgegeven knop wordt ingedrukt.

arg

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Events gebruiken met parameters voor meer informatie.

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

controller_1.buttonA.pressed(drive_forward)

.released#

.released voert een functie uit wanneer de opgegeven knop wordt losgelaten. Zodra deze is gebruikt, wordt de functie automatisch uitgevoerd elke keer dat die knop wordt losgelaten.

Gebruik:
Een van de beschikbare knopobjecten kan met deze methode worden gebruikt:

De voor- en achterkant van de V5-controller met de knoppen geel gemarkeerd. Aan de linkerkant van de controller bevinden zich de pijlknoppen omhoog, omlaag, naar links en naar rechts, en aan de rechterkant de knoppen X, A, B, Y met de klok mee vanaf 12 uur. Aan de achterkant van de controller bevinden zich de knoppen L1, L2, R1 en R2 aan respectievelijk de linker- en rechterkant.

Knop

Commando

buttonA

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

buttonB

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

buttonX

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

buttonY

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

buttonDown

controller_1.buttonDown.released(callback, arg) — De Omlaag-knop

buttonUp

controller_1.buttonUp.released(callback, arg) — De Omhoog-knop

buttonLeft

controller_1.buttonLeft.released(callback, arg) — De Linker knop

buttonRight

controller_1.buttonRight.released(callback, arg) — De Rechter knop

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

controller_1.buttonR2.released(callback, arg) — De R2-knop

Parameter

Beschrijving

callback

Een eerder gedefinieerde functie die elke keer wordt uitgevoerd wanneer de opgegeven knop wordt losgelaten.

arg

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Events gebruiken met parameters voor meer informatie.

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

controller_1.buttonA.released(back_up)

.changed#

.changed voert een functie uit wanneer de positie van de joystick verandert langs de opgegeven as. Eenmaal gebruikt, wordt de functie automatisch uitgevoerd telkens wanneer de positie van de joystick langs die as verandert.

Gebruik:
Een van de beschikbare asobjecten kan met deze methode worden gebruikt:

Een VEX V5-controller met de assen rond de joysticks gelabeld. As 1 en 2 bevinden zich rond de rechter joystick en as 3 en 4 rond de linker.

As

Commando

axis1

controller_1.axis1.changed(callback, arg) — De horizontale as van de rechter joystick

axis2

controller_1.axis2.changed(callback, arg) — De verticale as van de rechter joystick

axis3

controller_1.axis3.changed(callback, arg) — De verticale as van de linker joystick

axis4

controller_1.axis4.changed(callback, arg) — De horizontale as van de linker joystick

Parameter

Beschrijving

callback

Een eerder gedefinieerde functie die elke keer wordt uitgevoerd wanneer de positie van de joystick verandert langs de opgegeven as.

arg

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Events gebruiken met parameters voor meer informatie.

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

controller_1.axis4.changed(tada_sound)

Constructeurs#

Controller#

Controller maakt een Controller-object aan. Het handmatig aanmaken van een Controller-object is alleen nodig bij het configureren van een controller buiten VEXcode.

Usage:
Controller(controller_type)

Parameter

Beschrijving

controller_type

Optioneel. Het type controller dat moet worden aangemaakt: PRIMARY voor de primaire controller die is verbonden met de Brain of PARTNER voor de tweede controller die is verbonden met de Brain.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)