Kontroler#

Wstęp#

Kontroler VEX EXP posiada przyciski i dwa joysticki. Metody kontrolera pozwalają na sprawdzanie naciśnięć przycisków, odczytywanie ruchów joysticka, włączanie lub wyłączanie skonfigurowanych akcji kontrolera oraz uruchamianie funkcji w przypadku wystąpienia zdarzeń 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 przykładowej nazwy kontrolera controller . W razie potrzeby zastąp ją własną, skonfigurowaną nazwą.

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

Akcja — włącz lub wyłącz skonfigurowane akcje 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 — uruchamianie funkcji po zmianie sygnału wejściowego 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.

Działanie#

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 przez kontroler akcje.

# 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 zwraca informację, czy konkretny przycisk kontrolera jest aktualnie wciśnięty. Tę metodę należy wywołać dla konkretnego obiektu przycisku, takiego jak controller.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 góra kontrolera EXP z joystickami, przyciskami strzałek i przyciskami akcji zaznaczonymi na żółto. Na powierzchni kontrolera znajdują się dwa joysticki po lewej i prawej stronie, przyciski strzałek w górę i w dół po lewej oraz przyciski A i B po prawej. Na górze kontrolera znajdują się przyciski L1 i L2 po lewej stronie oraz R1 i R2 po prawej stronie.

Przycisk

Rozkaz

buttonA

controller.buttonA.pressing() — Przycisk A

buttonB

controller.buttonB.pressing() — Przycisk B

buttonDown

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

buttonUp

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

buttonL1

controller.buttonL1.pressing() — Przycisk L1

buttonL2

controller.buttonL2.pressing() — Przycisk L2

buttonL3

controller.buttonL3.pressing() — Przycisk L3

buttonR1

controller.buttonR1.pressing() — Przycisk R1

buttonR2

controller.buttonR2.pressing() — Przycisk R2

buttonR3

controller.buttonR3.pressing() — Przycisk R3

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

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

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

Przód kontrolera EXP z numerami osi joysticka zaznaczonymi na czerwono. Na powierzchni kontrolera lewy joystick jest oznaczony jako Oś 4 (ruch w lewo i w prawo) oraz Oś 3 (ruch w górę i w dół), a prawy joystick jest oznaczony jako Oś 1 (ruch w lewo i w prawo) oraz Oś 2 (ruch w górę i w dół).

Oś

Rozkaz

axis1

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

axis2

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

axis3

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

axis4

controller.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.axis4.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.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 góra kontrolera EXP z joystickami, przyciskami strzałek i przyciskami akcji zaznaczonymi na żółto. Na powierzchni kontrolera znajdują się dwa joysticki po lewej i prawej stronie, przyciski strzałek w górę i w dół po lewej oraz przyciski A i B po prawej. Na górze kontrolera znajdują się przyciski L1 i L2 po lewej stronie oraz R1 i R2 po prawej stronie.

Przycisk

Rozkaz

buttonA

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

buttonB

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

buttonDown

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

buttonUp

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

buttonL1

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

buttonL2

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

buttonL3

controller.buttonL3.pressed(callback, arg) — Przycisk L3

buttonR1

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

buttonR2

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

buttonR3

controller.buttonR3.pressed(callback, arg) — Przycisk R3

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 R1 is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 200, MM)

controller.buttonR1.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 góra kontrolera EXP z joystickami, przyciskami strzałek i przyciskami akcji zaznaczonymi na żółto. Na powierzchni kontrolera znajdują się dwa joysticki po lewej i prawej stronie, przyciski strzałek w górę i w dół po lewej oraz przyciski A i B po prawej. Na górze kontrolera znajdują się przyciski L1 i L2 po lewej stronie oraz R1 i R2 po prawej stronie.

Przycisk

Rozkaz

buttonA

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

buttonB

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

buttonDown

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

buttonUp

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

buttonL1

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

buttonL2

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

buttonL3

controller.buttonL3.released(callback, arg) — Przycisk L3

buttonR1

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

buttonR2

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

buttonR3

controller.buttonR3.released(callback, arg) — Przycisk R3

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.

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

controller.buttonR1.released(stop_driving)

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

Przód kontrolera EXP z numerami osi joysticka zaznaczonymi na czerwono. Na powierzchni kontrolera lewy joystick jest oznaczony jako Oś 4 (ruch w lewo i w prawo) oraz Oś 3 (ruch w górę i w dół), a prawy joystick jest oznaczony jako Oś 1 (ruch w lewo i w prawo) oraz Oś 2 (ruch w górę i w dół).

Oś

Rozkaz

axis1

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

axis2

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

axis3

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

axis4

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

controller.axis3.changed(beep)

Konstruktorzy#

Controller#

Kontroler Controller kontrolera poza VEXcode.

Usage:
Controller()

Parametry

Opis

Ten konstruktor nie ma żadnych parametrów.

# Create a Controller object
my_controller = Controller()