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ętopressed – 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

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

Kontroler drona VEX AIR z przyciskami od 5 do 12. Przyciski 5 i 6 znajdują się z tyłu po prawej stronie kontrolera, prostopadle do joysticka. Przyciski 7 i 8 znajdują się w tym samym miejscu po lewej stronie. Przyciski od 9 do 12 znajdują się na spodzie kontrolera, przy czym przycisk 9 znajduje się w prawym górnym rogu nad przyciskiem 10, a przycisk 11 w lewym górnym rogu nad przyciskiem 12.

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

axis1

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

axis2

controller.axis2.position() — Oś pozioma lewego joysticka

axis3

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

axis4

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

Kontroler drona VEX AIR z zaznaczonymi etykietami osi 1 i 2 wokół lewego joysticka oraz etykietami osi 3 i 4 wokół prawego joysticka.

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

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

Kontroler drona VEX AIR z przyciskami od 5 do 12. Przyciski 5 i 6 znajdują się z tyłu po prawej stronie kontrolera, prostopadle do joysticka. Przyciski 7 i 8 znajdują się w tym samym miejscu po lewej stronie. Przyciski od 9 do 12 znajdują się na spodzie kontrolera, przy czym przycisk 9 znajduje się w prawym górnym rogu nad przyciskiem 10, a przycisk 11 w lewym górnym rogu nad przyciskiem 12.

Parametry

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

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

Kontroler drona VEX AIR z przyciskami od 5 do 12. Przyciski 5 i 6 znajdują się z tyłu po prawej stronie kontrolera, prostopadle do joysticka. Przyciski 7 i 8 znajdują się w tym samym miejscu po lewej stronie. Przyciski od 9 do 12 znajdują się na spodzie kontrolera, przy czym przycisk 9 znajduje się w prawym górnym rogu nad przyciskiem 10, a przycisk 11 w lewym górnym rogu nad przyciskiem 12.

Parametry

Opis

callback

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

arg

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

axis1

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

axis2

controller.axis2.position() — Oś pozioma lewego joysticka

axis3

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

axis4

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

Kontroler drona VEX AIR z zaznaczonymi etykietami osi 1 i 2 wokół lewego joysticka oraz etykietami osi 3 i 4 wokół prawego joysticka.

Parametry

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