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.
remote_control_code_enabled— Włącza lub wyłącza akcje kontrolera skonfigurowane w menu Urządzenia.
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.
Controller— Tworzy obiekt 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 |
|---|---|
|
Włącza akcje skonfigurowane przez kontroler. |
|
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:
Przycisk |
Rozkaz |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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:
Oś |
Rozkaz |
|---|---|
|
|
|
|
|
|
|
|
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:
Przycisk |
Rozkaz |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Parametr |
Opis |
|---|---|
|
Wcześniej zdefiniowana funkcja, która ma być uruchamiana za każdym razem, gdy zostanie naciśnięty określony przycisk. |
|
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:
Przycisk |
Rozkaz |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Parametr |
Opis |
|---|---|
|
Wcześniej zdefiniowana funkcja, która ma być uruchamiana za każdym razem, gdy zostanie zwolniony określony przycisk. |
|
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:
Oś |
Rozkaz |
|---|---|
|
|
|
|
|
|
|
|
Parametr |
Opis |
|---|---|
|
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. |
|
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()