Kontroler#
Wstęp#
Kontroler drona VEX AIR posiada 12 przycisków i dwa joysticki. Dzięki tym wejściom dron wykrywa naciśnięcia przycisków i ruchy joysticka, umożliwiając interaktywne i responsywne sterowanie.
Poniżej znajduje się lista wszystkich dostępnych metod:
Gettery – odczyt przycisku, joysticka i stanu połączenia.
pressing– Zwraca informację, czy konkretny przycisk jest aktualnie naciśnięty.position– Zwraca pozycję joysticka wzdłuż określonej osi.is_drone_connected– Zwraca informację, czy kontroler jest połączony z dronem.get_battery_level– Zwraca poziom naładowania baterii kontrolera.
Wywołania zwrotne – odpowiadają na zmiany wprowadzane za pomocą przycisków lub joysticków.
naciśnięto
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.
Getters#
pressing#
pressing zwraca wartość logiczną wskazującą, czy konkretny przycisk kontrolera jest aktualnie wciśnięty. Tę metodę należy wywołać dla konkretnego obiektu przycisku, takiego jak button5 (pełna lista obiektów przycisków znajduje się poniżej).
True- Naciśnięty jest określony przycisk.False- Określony przycisk nie jest wciśnięty.
Zastosowanie:
Za pomocą tej metody można użyć jednego z ośmiu dostępnych przycisków o numerach od 5 do 12, jak pokazano poniżej:
Przycisk |
Rozkaz |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Take a picture when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
# Fly using the controller sticks
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
# Capture an image from the forward camera when button 5 is pressed.
if controller.button5.pressing():
drone.camera.capture_image(FORWARD_CAMERA)
wait(5, MSEC)
position#
Pozycja position zwraca pozycję określonej osi joysticka, jako wartość procentową od –100% do 100%.
Stosowanie:
Do tej metody można użyć jednej z czterech dostępnych osi, ponumerowanych od 1 do 4.
Oś |
Rozkaz |
|---|---|
|
|
|
|
|
|
|
|

Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Climb when the left joystick is moved up.
drone.take_off(climb_to=500)
while True:
if controller.axis1.position() > 0:
drone.climb(direction=UP, velocity=50)
else:
drone.hover()
wait(5, MSEC)
is_drone_connected#
is_drone_connected zwraca wartość logiczną wskazującą, czy dron jest połączony.
True- Dron jest połączony.False- Dron nie jest podłączony.
Stosowanie:
controller.is_drone_connected()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Print controller connection status on screen.
while True:
if controller.is_drone_connected():
controller.screen.clear_screen()
controller.screen.set_cursor(1, 1)
controller.screen.print("Controller connected")
wait(0.5, SECONDS)
get_battery_level#
get_battery_level zwraca poziom naładowania baterii kontrolera w procentach od 0% do 100%.
Stosowanie:
controller.get_battery_level()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Show controller's battery level.
if controller.get_battery_level() > 50:
controller.screen.print("Battery level ok")
else:
controller.screen.print("Battery level low")
Wywołania zwrotne#
pressed#
pressed runs a function when the specified button is pressed. Once it is used, the function will run automatically each time that button is pressed.
Zastosowanie:
Za pomocą tej metody można użyć jednego z ośmiu dostępnych przycisków, ponumerowanych od 5 do 12.
Przycisk |
Rozkaz |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Parametry |
Opis |
|---|---|
|
Wcześniej zdefiniowana funkcja, która ma być uruchamiana za każdym razem, gdy zostanie naciśnięty określony przycisk. |
|
Opcjonalnie. Krotka krotka zawierająca argumenty do przekazania do funkcji wywołania zwrotnego. Więcej informacji można znaleźć w sekcji Używanie zdarzeń z parametrami. |
# Take a picture when button 5 is pressed.
def take_picture():
drone.camera.capture_image(FORWARD_CAMERA)
# Run take_picture each time button 5 is pressed.
controller.button5.pressed(take_picture)
# Fly using the controller sticks.
drone.take_off(climb_to=500)
while True:
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
wait(5, MSEC)
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 ośmiu dostępnych przycisków, ponumerowanych od 5 do 12.
Przycisk |
Rozkaz |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Parametry |
Opis |
|---|---|
|
Wcześniej zdefiniowana funkcja, która ma być uruchamiana za każdym razem, gdy zostanie zwolniony określony przycisk. |
|
Opcjonalnie. Krotka krotka zawierająca argumenty do przekazania do funkcji wywołania zwrotnego. Więcej informacji można znaleźć w sekcji Używanie funkcji z parametrami. |
# Take a picture when button 5 is released.
def take_picture():
drone.camera.capture_image(FORWARD_CAMERA)
# Run take_picture each time button 5 is released.
controller.button5.released(take_picture)
# Fly using the controller sticks.
drone.take_off(climb_to=500)
while True:
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
wait(5, MSEC)
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.
Stosowanie:
Do tej metody można użyć jednej z czterech dostępnych osi, ponumerowanych od 1 do 4.
Oś |
Rozkaz |
|---|---|
|
|
|
|
|
|
|
|

Parametry |
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 krotka zawierająca argumenty do przekazania do funkcji wywołania zwrotnego. Więcej informacji można znaleźć w sekcji Używanie funkcji z parametrami. |
# Move forward when the left joystick moves.
def on_axis1_changed():
drone.move_for(direction=0, distance=200, velocity=50, units=MM)
drone.take_off(climb_to=500)
controller.axis1.changed(on_axis1_changed)