Controller#

Invoering#

De VEX AIR dronecontroller heeft een lay-out met 12 knoppen en twee joysticks. Deze inputs stellen de drone in staat om knopdrukken en joystickbewegingen te detecteren, waardoor interactieve en responsieve besturing mogelijk is.

Hieronder vindt u een lijst met alle beschikbare methoden:

Getters – Leest de status van knoppen, joysticks en verbindingen.

  • pressing – Geeft aan of er momenteel op een specifieke knop wordt gedrukt.

  • position – Geeft de positie van de joystick langs een opgegeven as terug.

  • is_drone_connected – Geeft aan of de controller met de drone is verbonden.

  • get_battery_level – Geeft het batterijniveau van de controller weer.

Callbacks – Reageren op wijzigingen in knop- of joystickinvoer.

  • pressed – Voert een functie uit wanneer een bepaalde knop wordt ingedrukt.

  • released – Voert een functie uit wanneer een specifieke knop wordt losgelaten.

  • changed – Voert een functie uit wanneer de positie van de joystick verandert langs een gespecificeerde as.

Getters#

pressing#

pressing retourneert een Booleaanse waarde die aangeeft of een specifieke knop op de controller momenteel is ingedrukt. Deze methode moet worden aangeroepen op een specifiek knopobject, zoals button5 (zie de volledige lijst met knopobjecten hieronder).

  • True - De aangegeven knop wordt ingedrukt.

  • False - De opgegeven knop wordt niet ingedrukt.

Gebruik:
Een van de acht beschikbare knoppen, genummerd van 5 tot en met 12, kan met deze methode worden gebruikt, zoals hieronder weergegeven:

Knop

Commando

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

Een VEX AIR dronecontroller met de knoppen 5 tot en met 12. Knop 5 en 6 bevinden zich aan de achterkant van de rechterkant van de controller, loodrecht op de joystick. Knop 7 en 8 bevinden zich op dezelfde positie aan de linkerkant. Knop 9 tot en met 12 bevinden zich aan de onderkant van de controller, waarbij 9 in de rechterbovenhoek boven 10 zit en 11 in de linkerbovenhoek boven 12.

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

position geeft de positie van de opgegeven as van de joystick weer als een percentage van –100% tot 100%.

Gebruik:

Bij deze methode kan één van de vier beschikbare assen worden gebruikt, genummerd van 1 tot en met 4.

As

Commando

axis1

controller.axis1.position() — De verticale as van de linker joystick

axis2

controller.axis2.position() — De horizontale as van de linker joystick

axis3

controller.axis3.position() — De horizontale as van de rechter joystick

axis4

controller.axis4.position() — De verticale as van de rechter joystick

Een VEX AIR dronecontroller met de labels As 1 en 2 rond de linker joystick gemarkeerd, en de labels As 3 en 4 rond de rechter joystick gemarkeerd.

Parameters

Beschrijving

Deze methode heeft geen parameters.

# 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 retourneert een Booleaanse waarde die aangeeft of de drone verbonden is.

  • True - De drone is verbonden.

  • False - De drone is niet verbonden.

Gebruik:

controller.is_drone_connected()

Parameters

Beschrijving

Deze methode heeft geen parameters.

# 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 geeft het batterijniveau van de controller weer als een percentage van 0% tot 100%.

Gebruik:

controller.get_battery_level()

Parameters

Beschrijving

Deze methode heeft geen parameters.

# Show controller's battery level.
if controller.get_battery_level() > 50:
    controller.screen.print("Battery level ok")
else:
    controller.screen.print("Battery level low")

Terugbelverzoeken#

pressed#

pressed voert een functie uit wanneer de opgegeven knop wordt ingedrukt. Zodra deze is gebruikt, wordt de functie automatisch uitgevoerd elke keer dat die knop wordt ingedrukt.

Gebruik:
Een van de acht beschikbare knoppen, genummerd van 5 tot en met 12, kan met deze methode worden gebruikt.

Knop

Commando

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

Een VEX AIR dronecontroller met de knoppen 5 tot en met 12. Knop 5 en 6 bevinden zich aan de achterkant van de rechterkant van de controller, loodrecht op de joystick. Knop 7 en 8 bevinden zich op dezelfde positie aan de linkerkant. Knop 9 tot en met 12 bevinden zich aan de onderkant van de controller, waarbij 9 in de rechterbovenhoek boven 10 zit en 11 in de linkerbovenhoek boven 12.

Parameters

Beschrijving

callback

Een eerder gedefinieerde functie die elke keer wordt uitgevoerd wanneer de opgegeven knop wordt ingedrukt.

arg

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Events gebruiken met parameters voor meer informatie.

# 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 voert een functie uit wanneer de opgegeven knop wordt losgelaten. Zodra deze functie is ingesteld, wordt deze automatisch uitgevoerd telkens wanneer de knop wordt losgelaten.

Gebruik:
Een van de acht beschikbare knoppen, genummerd van 5 tot en met 12, kan met deze methode worden gebruikt.

Knop

Commando

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

Een VEX AIR dronecontroller met de knoppen 5 tot en met 12. Knop 5 en 6 bevinden zich aan de achterkant van de rechterkant van de controller, loodrecht op de joystick. Knop 7 en 8 bevinden zich op dezelfde positie aan de linkerkant. Knop 9 tot en met 12 bevinden zich aan de onderkant van de controller, waarbij 9 in de rechterbovenhoek boven 10 zit en 11 in de linkerbovenhoek boven 12.

Parameters

Beschrijving

callback

Een eerder gedefinieerde functie die elke keer wordt uitgevoerd wanneer de opgegeven knop wordt losgelaten.

arg

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Functies gebruiken met parameters voor meer informatie.

# 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 voert een functie uit wanneer de positie van de joystick verandert langs de opgegeven as. Eenmaal gebruikt, wordt de functie automatisch uitgevoerd telkens wanneer de positie van de joystick langs die as verandert.

Gebruik:

Bij deze methode kan één van de vier beschikbare assen worden gebruikt, genummerd van 1 tot en met 4.

As

Commando

axis1

controller.axis1.position() — De verticale as van de linker joystick

axis2

controller.axis2.position() — De horizontale as van de linker joystick

axis3

controller.axis3.position() — De horizontale as van de rechter joystick

axis4

controller.axis4.position() — De verticale as van de rechter joystick

Een VEX AIR dronecontroller met de labels As 1 en 2 rond de linker joystick gemarkeerd, en de labels As 3 en 4 rond de rechter joystick gemarkeerd.

Parameters

Beschrijving

callback

Een eerder gedefinieerde functie die elke keer wordt uitgevoerd wanneer de positie van de joystick verandert langs de opgegeven as.

arg

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Functies gebruiken met parameters voor meer informatie.

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