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

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

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

Parametrit |
Kuvaus |
|---|---|
|
Aiemmin määritelty function, joka suoritetaan aina, kun määritettyä painiketta painetaan. |
|
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 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Parametrit |
Kuvaus |
|---|---|
|
Aiemmin määritelty function, joka suoritetaan aina, kun määritetty painike vapautetaan. |
|
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 |
|---|---|
|
|
|
|
|
|
|
|

Parametrit |
Kuvaus |
|---|---|
|
Aiemmin määritelty function, joka suoritetaan aina, kun joystickin asento muuttuu määritetyn akselin suuntaisesti. |
|
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)