Kontroler#

Wstęp#

Kontroler V5 ma przyciski, dwa joysticki, silnik wibracji i ekran. Metody kontrolera mogą służyć do sprawdzania naciśnięć przycisków, odczytywania ruchu joysticka, wibracji kontrolera, włączania lub wyłączania skonfigurowanych akcji kontrolera, uruchamiania funkcji w przypadku wystąpienia zdarzeń kontrolera lub wyświetlania tekstu na ekranie kontrolera.

Skonfigurowane akcje kontrolera to zachowania kontrolera ustawione w menu Urządzenia. Użyj remote_control_code_enabled , aby tymczasowo włączyć lub wyłączyć te skonfigurowane akcje podczas projektu.

Ta strona używa controller_1 jako przykładowej nazwy kontrolera. W razie potrzeby zastąp ją własną, skonfigurowaną nazwą.

Poniżej znajduje się lista wszystkich dostępnych metod:

Akcje — włącz kontroler lub wyłącz skonfigurowane akcje kontrolera.

Ekran — wyświetlanie tekstu i liczb na ekranie kontrolera.

  • print — Wyświetla tekst, liczby lub wartości zmiennych na ekranie kontrolera.

  • set_cursor — Przenosi kursor do określonego wiersza i kolumny na ekranie kontrolera.

  • column — Zwraca bieżącą kolumnę kursora na ekranie kontrolera.

  • row — Zwraca bieżący wiersz kursora na ekranie kontrolera.

  • clear_screen — Czyści ekran kontrolera.

  • clear_row — Czyści jeden wiersz na ekranie kontrolera.

  • next_row — Przenosi kursor do następnego wiersza na ekranie kontrolera.

Gettery — odczytują stany przycisków i położenia joysticka.

  • .pressing — Zwraca informację, czy określony przycisk jest naciśnięty.

  • .position — Zwraca pozycję określonej osi joysticka.

Wywołania zwrotne — uruchamiają funkcje, gdy zmienia się sygnał wejściowy kontrolera.

  • .pressed — Uruchamia funkcję po naciśnięciu określonego przycisku.

  • .released — Uruchamia funkcję po zwolnieniu określonego przycisku.

  • .changed — Uruchamia funkcję, gdy położenie joysticka zmienia się wzdłuż określonej osi.

Konstruktor — ręczne tworzenie obiektu kontrolera.

Akcje#

rumble#

rumble odtwarza wzór wibracji na kontrolerze. W ciągu wzorca kropki oznaczają krótkie wibracje, myślniki oznaczają długie wibracje, a spacje oznaczają pauzy.

Usage:
controller_1.rumble(pattern)

Parametr

Opis

pattern

Ciąg składający się z kropek, myślników i spacji, który reprezentuje wzór wibracji.

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

remote_control_code_enabled#

remote_control_code_enabled to zmienna, która włącza lub wyłącza akcje kontrolera skonfigurowane w menu Urządzenia. Akcje skonfigurowane przez kontroler są domyślnie włączone.

Usage:
remote_control_code_enabled = state

Wartość

Opis

True

Włącza akcje skonfigurowane przez Kontroler.

False

Wyłącza skonfigurowane akcje kontrolera.

# 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

Ekran#

Ekran kontrolera V5 ma 3 wiersze i 19 kolumn służących do wyświetlania tekstu i liczb.

Zrzut ekranu kontrolera V5, pokazujący wiersze i kolumny w obszarze wydruku. Wiersz 1, kolumna 1 zaczynają się w lewym górnym rogu, a wiersz 3, kolumna 19, znajdują się w prawym dolnym rogu.

print#

controller_1.screen.print wyświetla tekst, liczby lub wartości zmiennych na ekranie kontrolera, wykorzystując bieżącą pozycję kursora.

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

Parametr

Opis

value

Tekst, liczba lub wartość zmiennej do wyświetlenia na ekranie kontrolera. Można wyświetlić więcej niż jedną wartość, rozdzielając je przecinkami.

sep

Opcjonalnie. Ciąg znaków do umieszczenia między wartościami. Musi być zapisany jako argument słowa kluczowego, np. sep=”- “. Wartość domyślna to ” “.

precision

Opcjonalnie. Liczba miejsc dziesiętnych do wyświetlenia podczas drukowania liczb prostych. Musi być zapisana jako argument słowa kluczowego, np. precision=2. Wartość domyślna to 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 przesuwa kursor do określonego wiersza i kolumny na ekranie kontrolera. W tym miejscu pojawi się następna wydrukowana wartość.

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

Parametr

Opis

row

Wiersz kursora od 1 do 3.

col

Kolumna kursora od 1 do 19.

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

column#

column zwraca bieżącą kolumnę, w której tekst będzie drukowany na ekranie kontrolera.

Usage:
controller_1.screen.column()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

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

row#

row zwraca bieżący wiersz, w którym tekst będzie drukowany na ekranie kontrolera.

Usage:
controller_1.screen.row()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

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

clear_screen#

clear_screen czyści ekran kontrolera i przesuwa kursor z powrotem do pozycji początkowej.

Usage:
controller_1.screen.clear_screen()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

# 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 czyści jeden wiersz na ekranie kontrolera.

Usage:
controller_1.screen.clear_row(row)

Parametr

Opis

row

Opcjonalnie. Wiersz do wyczyszczenia, od 1 do 3Jeśli nie podano wiersza, wyczyszczony zostanie bieżący wiersz kursora.

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

next_row#

next_row przenosi kursor do kolumny 1 w następnym wierszu ekranu kontrolera. W tym wierszu pojawi się kolejna wydrukowana wartość.

Usage:
controller_1.screen.next_row()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

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

Getters#

.pressing#

.pressing zwraca informację, czy konkretny przycisk kontrolera jest aktualnie wciśnięty. Tę metodę należy wywołać dla konkretnego obiektu przycisku, takiego jak controller_1.buttonA.

  • True — Naciśnięto określony przycisk.

  • False — Określony przycisk nie jest wciśnięty.

Zastosowanie:
Za pomocą tej metody można użyć jednego z dostępnych obiektów przycisku:

Przód i tył kontrolera V5 z przyciskami zaznaczonymi na żółto. Na powierzchni kontrolera znajdują się przyciski strzałek w górę, w dół, w lewo i w prawo po lewej stronie oraz przyciski X, A, B, Y, obracające się zgodnie z ruchem wskazówek zegara od godziny 12 po prawej stronie. Na tylnej stronie kontrolera znajdują się odpowiednio przyciski L1, L2, R1 i R2 po lewej i prawej stronie.

Przycisk

Rozkaz

buttonA

controller_1.buttonA.pressing() — Przycisk A

buttonB

controller_1.buttonB.pressing() — Przycisk B

buttonX

controller_1.buttonX.pressing() — Przycisk X

buttonY

controller_1.buttonY.pressing() — Przycisk Y

buttonDown

controller_1.buttonDown.pressing() — Przycisk W dół

buttonUp

controller_1.buttonUp.pressing() — Przycisk w górę

buttonLeft

controller_1.buttonLeft.pressing() — Przycisk Lewy

buttonRight

controller_1.buttonRight.pressing() — Przycisk Prawy

buttonL1

controller_1.buttonL1.pressing() — Przycisk L1

buttonL2

controller_1.buttonL2.pressing() — Przycisk L2

buttonR1

controller_1.buttonR1.pressing() — Przycisk R1

buttonR2

controller_1.buttonR2.pressing() — Przycisk R2

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

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

    wait(20, MSEC)

.position#

.position zwraca pozycję osi joysticka jako liczbę od -100 do 100.

Tę metodę należy wywołać dla konkretnego obiektu osi, takiego jak controller_1.axis1.

Zastosowanie:
Za pomocą tej metody można użyć jednego z dostępnych obiektów osi:

Kontroler VEX V5 z opisanymi osiami wokół joysticków. Osie 1 i 2 znajdują się wokół prawego joysticka, a osie 3 i 4 wokół lewego.

Oś

Rozkaz

axis1

controller_1.axis1.position() — Oś pozioma prawego joysticka

axis2

controller_1.axis2.position() — Oś pionowa prawego joysticka

axis3

controller_1.axis3.position() — Oś pionowa lewego joysticka

axis4

controller_1.axis4.position() — Oś pozioma lewego joysticka

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

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

Wywołania zwrotne#

.pressed#

.pressed uruchamia funkcję po naciśnięciu określonego przycisku. Po użyciu funkcja będzie uruchamiana automatycznie po każdym naciśnięciu tego przycisku.

Zastosowanie:
Za pomocą tej metody można użyć jednego z dostępnych obiektów przycisku:

Przód i tył kontrolera V5 z przyciskami zaznaczonymi na żółto. Na powierzchni kontrolera znajdują się przyciski strzałek w górę, w dół, w lewo i w prawo po lewej stronie oraz przyciski X, A, B, Y, obracające się zgodnie z ruchem wskazówek zegara od godziny 12 po prawej stronie. Na tylnej stronie kontrolera znajdują się odpowiednio przyciski L1, L2, R1 i R2 po lewej i prawej stronie.

Przycisk

Rozkaz

buttonA

controller_1.buttonA.pressed(callback, arg) — Przycisk A

buttonB

controller_1.buttonB.pressed(callback, arg) — Przycisk B

buttonX

controller_1.buttonX.pressed(callback, arg) — Przycisk X

buttonY

controller_1.buttonY.pressed(callback, arg) — Przycisk Y

buttonDown

controller_1.buttonDown.pressed(callback, arg) — Przycisk W dół

buttonUp

controller_1.buttonUp.pressed(callback, arg) — Przycisk W górę

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — Przycisk Lewy

buttonRight

controller_1.buttonRight.pressed(callback, arg) — Przycisk Prawy

buttonL1

controller_1.buttonL1.pressed(callback, arg) — Przycisk L1

buttonL2

controller_1.buttonL2.pressed(callback, arg) — Przycisk L2

buttonR1

controller_1.buttonR1.pressed(callback, arg) — Przycisk R1

buttonR2

controller_1.buttonR2.pressed(callback, arg) — Przycisk R2

Parametr

Opis

callback

Wcześniej zdefiniowana funkcja, która ma być uruchamiana za każdym razem, gdy zostanie naciśnięty określony przycisk.

arg

Opcjonalnie. Krotka zawierająca argumenty do przekazania do funkcji wywołania zwrotnego. Więcej informacji można znaleźć w Używanie zdarzeń z parametrami.

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

controller_1.buttonA.pressed(drive_forward)

.released#

.released uruchamia funkcję po zwolnieniu określonego przycisku. Po użyciu funkcja będzie uruchamiana automatycznie po każdym zwolnieniu przycisku.

Zastosowanie:
Za pomocą tej metody można użyć jednego z dostępnych obiektów przycisku:

Przód i tył kontrolera V5 z przyciskami zaznaczonymi na żółto. Na powierzchni kontrolera znajdują się przyciski strzałek w górę, w dół, w lewo i w prawo po lewej stronie oraz przyciski X, A, B, Y, obracające się zgodnie z ruchem wskazówek zegara od godziny 12 po prawej stronie. Na tylnej stronie kontrolera znajdują się odpowiednio przyciski L1, L2, R1 i R2 po lewej i prawej stronie.

Przycisk

Rozkaz

buttonA

controller_1.buttonA.released(callback, arg) — Przycisk A

buttonB

controller_1.buttonB.released(callback, arg) — Przycisk B

buttonX

controller_1.buttonX.released(callback, arg) — Przycisk X

buttonY

controller_1.buttonY.released(callback, arg) — Przycisk Y

buttonDown

controller_1.buttonDown.released(callback, arg) — Przycisk W dół

buttonUp

controller_1.buttonUp.released(callback, arg) — Przycisk W górę

buttonLeft

controller_1.buttonLeft.released(callback, arg) — Przycisk Lewy

buttonRight

controller_1.buttonRight.released(callback, arg) — Przycisk Prawy

buttonL1

controller_1.buttonL1.released(callback, arg) — Przycisk L1

buttonL2

controller_1.buttonL2.released(callback, arg) — Przycisk L2

buttonR1

controller_1.buttonR1.released(callback, arg) — Przycisk R1

buttonR2

controller_1.buttonR2.released(callback, arg) — Przycisk R2

Parametr

Opis

callback

Wcześniej zdefiniowana funkcja, która ma być uruchamiana za każdym razem, gdy zostanie zwolniony określony przycisk.

arg

Opcjonalnie. Krotka zawierająca argumenty do przekazania do funkcji wywołania zwrotnego. Więcej informacji można znaleźć w Używanie zdarzeń z parametrami.

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

controller_1.buttonA.released(back_up)

.changed#

.changed uruchamia funkcję, gdy położenie joysticka zmienia się wzdłuż określonej osi. Po użyciu funkcja będzie uruchamiana automatycznie za każdym razem, gdy położenie joysticka zmieni się wzdłuż tej osi.

Zastosowanie:
Za pomocą tej metody można użyć jednego z dostępnych obiektów osi:

Kontroler VEX V5 z opisanymi osiami wokół joysticków. Osie 1 i 2 znajdują się wokół prawego joysticka, a osie 3 i 4 wokół lewego.

Oś

Rozkaz

axis1

controller_1.axis1.changed(callback, arg) — Oś pozioma prawego joysticka

axis2

controller_1.axis2.changed(callback, arg) — Oś pionowa prawego joysticka

axis3

controller_1.axis3.changed(callback, arg) — Oś pionowa lewego joysticka

axis4

controller_1.axis4.changed(callback, arg) — Oś pozioma lewego joysticka

Parametr

Opis

callback

Wcześniej zdefiniowana funkcja, która ma być uruchamiana za każdym razem, gdy położenie joysticka zmieni się wzdłuż określonej osi.

arg

Opcjonalnie. Krotka zawierająca argumenty do przekazania do funkcji wywołania zwrotnego. Więcej informacji można znaleźć w Używanie zdarzeń z parametrami.

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

controller_1.axis4.changed(tada_sound)

Konstruktorzy#

Controller#

Kontroler Controller kontrolera poza VEXcode.

Usage:
Controller(controller_type)

Parametr

Opis

controller_type

Opcjonalnie. Typ kontrolera do utworzenia: PRIMARY dla kontrolera głównego podłączonego do mózgu lub PARTNER dla drugiego kontrolera podłączonego do mózgu.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)