Ohjain#

Johdanto#

VEX AIR -droonin ohjaimessa on 12-painikkeinen asettelu ja kaksi joystickia. Näiden tulojen avulla drone havaitsee painikkeiden painallukset ja joystickin liikkeet, mikä mahdollistaa interaktiivisen ja reagoivan ohjauksen.

Alla on luettelo kaikista käytettävissä olevista menetelmistä:

Getterit – Lukupainike, joystick ja yhteyden tila.

  • pressing – Palauttaa tiedon, jos tiettyä painiketta painetaan parhaillaan.

  • position – Palauttaa joystickin asennon määritetyn akselin suuntaisesti.

  • is_drone_connected – Palauttaa, onko ohjain yhdistetty drooniin.

  • get_battery_level – Palauttaa ohjaimen akun varaustason.

Takaisinkutsutoiminnot – Reagoi painikkeen tai joystickin syötteiden muutoksiin.

  • pressed – Suorittaa funktion, kun määritettyä painiketta painetaan.

  • released – Suorittaa funktion, kun määritetty painike vapautetaan.

  • changed – Suorittaa funktion, kun joystickin asento muuttuu määritetyn akselin suuntaisesti.

Getterit#

pressing#

pressing palauttaa totuusarvon, joka ilmaisee, painetaanko tiettyä ohjaimen painiketta parhaillaan. Tätä metodia on kutsuttava tietylle painikeobjektille, kuten button5 (katso täydellinen luettelo painikeobjekteista alta).

  • True - Määritettyä painiketta painetaan.

  • False - Määritettyä painiketta ei paineta.

Käyttö:
Tässä menetelmässä voidaan käyttää yhtä kahdeksasta käytettävissä olevasta painikkeesta, jotka on numeroitu 5–12, kuten alla on esitetty:

Painike

Komento

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

VEX AIR -droonin ohjain, jossa näkyvät painikkeet 5–12. Painikkeet 5 ja 6 sijaitsevat ohjaimen oikealla puolella takana, kohtisuorassa joystickiin nähden. Painikkeet 7 ja 8 ovat samassa paikassa vasemmalla puolella. Painikkeet 9–12 sijaitsevat ohjaimen pohjassa, numero 9 on oikeassa yläkulmassa numeron 10 yläpuolella ja numero 11 vasemmassa yläkulmassa numeron 12 yläpuolella.

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

# 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 palauttaa joystickin määritetyn akselin asennon prosentteina välillä –100 % - 100 %.

Käyttö:

Tässä menetelmässä voidaan käyttää yhtä neljästä käytettävissä olevasta akselista, jotka on numeroitu 1–4.

Akseli

Komento

axis1

controller.axis1.position() — Vasemman joystickin pystyakseli

axis2

controller.axis2.position() — Vasemman joystickin vaakasuora akseli

axis3

controller.axis3.position() — Oikean joystickin vaakasuora akseli

axis4

controller.axis4.position() — Oikean joystickin pystyakseli

VEX AIR -droonin ohjain, jossa akselien 1 ja 2 merkinnät on korostettu vasemman joystickin ympärillä ja akselien 3 ja 4 merkinnät oikean joystickin ympärillä.

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

# 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 palauttaa totuusarvon, joka ilmaisee, onko drone yhdistetty.

  • True - Drooni on yhdistetty.

  • False - Drooni ei ole yhteydessä.

Käyttö:

controller.is_drone_connected()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

# 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 palauttaa ohjaimen akun varaustason prosentteina väliltä 0–100 %.

Käyttö:

controller.get_battery_level()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

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

Takaisinkutsut#

pressed#

pressed suorittaa funktion, kun määritettyä painiketta painetaan. Kun painiketta on käytetty, funktio suoritetaan automaattisesti joka kerta, kun kyseistä painiketta painetaan.

Käyttö:
Tässä menetelmässä voidaan käyttää yhtä kahdeksasta käytettävissä olevasta painikkeesta, jotka on numeroitu 5–12.

Painike

Komento

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

VEX AIR -droonin ohjain, jossa näkyvät painikkeet 5–12. Painikkeet 5 ja 6 sijaitsevat ohjaimen oikealla puolella takana, kohtisuorassa joystickiin nähden. Painikkeet 7 ja 8 ovat samassa paikassa vasemmalla puolella. Painikkeet 9–12 sijaitsevat ohjaimen pohjassa, numero 9 on oikeassa yläkulmassa numeron 10 yläpuolella ja numero 11 vasemmassa yläkulmassa numeron 12 yläpuolella.

Parametrit

Kuvaus

callback

Aiemmin määritelty function, joka suoritetaan aina, kun määritettyä painiketta painetaan.

arg

Valinnainen. tuple, joka sisältää argumentteja, jotka välitetään takaisinkutsufunktiolle. Katso lisätietoja kohdasta Tapahtumien käyttö parametrien kanssa.

# 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 suorittaa funktion, kun määritetty painike vapautetaan. Kun painiketta on käytetty, funktio suoritetaan automaattisesti joka kerta, kun painike vapautetaan.

Käyttö:
Tässä menetelmässä voidaan käyttää yhtä kahdeksasta käytettävissä olevasta painikkeesta, jotka on numeroitu 5–12.

Painike

Komento

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

VEX AIR -droonin ohjain, jossa näkyvät painikkeet 5–12. Painikkeet 5 ja 6 sijaitsevat ohjaimen oikealla puolella takana, kohtisuorassa joystickiin nähden. Painikkeet 7 ja 8 ovat samassa paikassa vasemmalla puolella. Painikkeet 9–12 sijaitsevat ohjaimen pohjassa, numero 9 on oikeassa yläkulmassa numeron 10 yläpuolella ja numero 11 vasemmassa yläkulmassa numeron 12 yläpuolella.

Parametrit

Kuvaus

callback

Aiemmin määritelty function, joka suoritetaan aina, kun määritetty painike vapautetaan.

arg

Valinnainen. tuple, joka sisältää argumentteja, jotka välitetään takaisinkutsufunktiolle. Lisätietoja on kohdassa Funktioiden käyttö parametrien kanssa.

# 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 suorittaa funktion, kun joystickin asento muuttuu määritetyn akselin suuntaisesti. Kun sitä käytetään, funktio suoritetaan automaattisesti joka kerta, kun joystickin asento muuttuu kyseisellä akselilla.

Käyttö:

Tässä menetelmässä voidaan käyttää yhtä neljästä käytettävissä olevasta akselista, jotka on numeroitu 1–4.

Akseli

Komento

axis1

controller.axis1.position() — Vasemman joystickin pystyakseli

axis2

controller.axis2.position() — Vasemman joystickin vaakasuora akseli

axis3

controller.axis3.position() — Oikean joystickin vaakasuora akseli

axis4

controller.axis4.position() — Oikean joystickin pystyakseli

VEX AIR -droonin ohjain, jossa akselien 1 ja 2 merkinnät on korostettu vasemman joystickin ympärillä ja akselien 3 ja 4 merkinnät oikean joystickin ympärillä.

Parametrit

Kuvaus

callback

Aiemmin määritelty function, joka suoritetaan aina, kun joystickin asento muuttuu määritetyn akselin suuntaisesti.

arg

Valinnainen. tuple, joka sisältää argumentteja, jotka välitetään takaisinkutsufunktiolle. Lisätietoja on kohdassa Funktioiden käyttö parametrien kanssa.

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