Kontroller#

Introduktion#

VEX AIR-drönarkontrollen har en layout med 12 knappar och två joysticks. Dessa ingångar gör att drönaren kan upptäcka knapptryckningar och joystickrörelser, vilket möjliggör interaktiv och responsiv kontroll.

Nedan följer en lista över alla tillgängliga metoder:

Getters – Läs knapp, joystick och anslutningsstatus.

  • pressing – Returnerar om en specifik knapp trycks ned just nu.

  • position – Returnerar joystickens position längs en angiven axel.

  • is_drone_connected – Returnerar om handkontrollen är ansluten till drönaren.

  • get_battery_level – Returnerar handkontrollens batterinivå.

Återuppringningar – Svara på ändringar i knapp- eller joystickinmatning.

  • pressed – Kör en funktion när en angiven knapp trycks ned.

  • released – Kör en funktion när en angiven knapp släpps.

  • changed – Kör en funktion när joystickens position ändras längs en specificerad axel.

Getters#

pressing#

pressing returnerar ett booleskt värde som anger om en specifik knapp på kontrollenheten trycks ned för närvarande. Denna metod måste anropas på ett specifikt knappobjekt, till exempel button5 (se en fullständig lista över knappobjekt nedan).

  • True - Den angivna knappen trycks ned.

  • False - Den angivna knappen trycks inte ned.

Användning:
En av åtta tillgängliga knappar, numrerade 5 till 12, kan användas med den här metoden, enligt nedan:

Knapp

Kommando

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

En VEX AIR-drönarkontroll som visar knapparna 5 till 12. Knapparna 5 och 6 finns på baksidan av kontrollens högra sida, vinkelrätt mot joysticken. Knapparna 7 och 8 är på samma plats på vänster sida. Knapparna 9 till 12 finns på undersidan av kontrollen, med 9 i det övre högra hörnet ovanför 10 och 11 i det övre vänstra hörnet ovanför 12.

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 returnerar positionen för joystickens angivna axel, som en procentandel från –100 % till 100 %.

Användande:

En av fyra tillgängliga axlar, numrerade 1 till 4, kan användas med den här metoden.

Axel

Kommando

axis1

controller.axis1.position() — Den vänstra joystickens vertikala axel

axis2

controller.axis2.position() — Den vänstra joystickens horisontella axel

axis3

controller.axis3.position() — Den högra joystickens horisontella axel

axis4

controller.axis4.position() — Den högra joystickens vertikala axel

En VEX AIR-drönarkontroll med etiketterna för axel 1 och 2 markerade runt den vänstra joysticken och etiketterna för axel 3 och 4 markerade runt den högra joysticken.

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 returnerar ett booleskt värde som anger om drönaren är ansluten.

  • True - Drönaren är ansluten.

  • False - Drönaren är inte ansluten.

Användande:

controller.is_drone_connected()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 returnerar kontrollenhetens batterinivå, som en procentandel från 0 % till 100 %.

Användande:

controller.get_battery_level()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

Återuppringningar#

pressed#

pressed kör en funktion när den angivna knappen trycks ner. När den väl används körs funktionen automatiskt varje gång knappen trycks ner.

Användning:
En av åtta tillgängliga knappar, numrerade 5 till 12, kan användas med den här metoden.

Knapp

Kommando

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

En VEX AIR-drönarkontroll som visar knapparna 5 till 12. Knapparna 5 och 6 finns på baksidan av kontrollens högra sida, vinkelrätt mot joysticken. Knapparna 7 och 8 är på samma plats på vänster sida. Knapparna 9 till 12 finns på undersidan av kontrollen, med 9 i det övre högra hörnet ovanför 10 och 11 i det övre vänstra hörnet ovanför 12.

Parametrar

Beskrivning

callback

En tidigare definierad funktion som ska köras varje gång den angivna knappen trycks ned.

arg

Valfritt. En tupel som innehåller argument som ska skickas till callback-funktionen. Se Använda händelser med parametrar för mer information.

# 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 kör en funktion när den angivna knappen släpps. När den väl används körs funktionen automatiskt varje gång knappen släpps.

Användning:
En av åtta tillgängliga knappar, numrerade 5 till 12, kan användas med den här metoden.

Knapp

Kommando

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

En VEX AIR-drönarkontroll som visar knapparna 5 till 12. Knapparna 5 och 6 finns på baksidan av kontrollens högra sida, vinkelrätt mot joysticken. Knapparna 7 och 8 är på samma plats på vänster sida. Knapparna 9 till 12 finns på undersidan av kontrollen, med 9 i det övre högra hörnet ovanför 10 och 11 i det övre vänstra hörnet ovanför 12.

Parametrar

Beskrivning

callback

En tidigare definierad funktion som ska köras varje gång den angivna knappen släpps.

arg

Valfritt. En tupel som innehåller argument som ska skickas till callback-funktionen. Se Använda funktioner med parametrar för mer information.

# 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 kör en funktion när joystickens position ändras längs den angivna axeln. När den väl används körs funktionen automatiskt varje gång joystickens position ändras längs den axeln.

Användande:

En av fyra tillgängliga axlar, numrerade 1 till 4, kan användas med den här metoden.

Axel

Kommando

axis1

controller.axis1.position() — Den vänstra joystickens vertikala axel

axis2

controller.axis2.position() — Den vänstra joystickens horisontella axel

axis3

controller.axis3.position() — Den högra joystickens horisontella axel

axis4

controller.axis4.position() — Den högra joystickens vertikala axel

En VEX AIR-drönarkontroll med etiketterna för axel 1 och 2 markerade runt den vänstra joysticken och etiketterna för axel 3 och 4 markerade runt den högra joysticken.

Parametrar

Beskrivning

callback

En tidigare definierad funktion som körs varje gång joystickens position ändras längs den angivna axeln.

arg

Valfritt. En tupel som innehåller argument som ska skickas till callback-funktionen. Se Använda funktioner med parametrar för mer information.

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