Ohjain#

Johdanto#

VEX EXP -ohjaimessa on painikkeet ja kaksi joystickia. Ohjainmenetelmiä voidaan käyttää painikkeiden painallusten tarkistamiseen, joystickin liikkeiden lukemiseen, määritettyjen ohjaintoimintojen käyttöönottoon tai poistamiseen käytöstä tai toimintojen suorittamiseen ohjaintapahtumien yhteydessä.

Määritetyt ohjaintoiminnot ovat Laitteet-valikossa asetettuja ohjaintoimintoja. Käytä arvoa remote_control_code_enabled ottaaksesi määritetyt toiminnot tilapäisesti käyttöön tai poistaaksesi ne käytöstä projektin aikana.

Tällä sivulla käytetään esimerkkinä ohjaimen nimeä controller Korvaa se tarvittaessa omalla määritetyllä nimelläsi.

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

Toiminto — Ota määritetyt ohjaimen toiminnot käyttöön tai poista ne käytöstä.

Getterit — Lukevat painikkeiden tiloja ja joystickin asentoja.

  • .pressing — Palauttaa tiedon siitä, painetaanko määritettyä painiketta.

  • .position — Palauttaa määritetyn joystick-akselin sijainnin.

Takaisinkutsutoiminnot — Suorita funktioita, kun ohjaimen syöte muuttuu.

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

Konstruktori — Luo Controller-objekti manuaalisesti.

Toiminta#

remote_control_code_enabled#

remote_control_code_enabled on muuttuja, joka ottaa käyttöön tai poistaa käytöstä Laitteet-valikossa määritettyjä ohjaimen toimintoja. Ohjaimen määrittämät toiminnot ovat oletusarvoisesti käytössä.

Usage:
remote_control_code_enabled = state

Arvo

Kuvaus

True

Mahdollistaa ohjaimen määrittämät toiminnot.

False

Poistaa käytöstä ohjaimen määrittämät toiminnot.

# Drive forward or backward using the left joystick
remote_control_code_enabled = False

while True:
    if controller.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use controller configured actions again
    elif controller.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

Getterit#

.pressing#

.pressing palauttaa tiedon, painetaanko tiettyä ohjaimen painiketta parhaillaan. Tätä metodia on kutsuttava tietylle painikeobjektille, kuten controller.buttonA.

  • True — Määritettyä painiketta painetaan.

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

Käyttö:
Yhtä käytettävissä olevista painikeobjekteista voidaan käyttää tämän metodin kanssa:

EXP-ohjaimen etu- ja yläpuoli, jossa ohjaussauvat, nuolipainikkeet ja toimintopainikkeet on korostettu keltaisella. Ohjaimen pinnalla on kaksi ohjaussauvaa vasemmalla ja oikealla, ylös- ja alas-nuolinäppäimet vasemmalla ja A- ja B-painikkeet oikealla. Ohjaimen yläosassa ovat vasemmalla puolella L1 ja L2 ja oikealla puolella R1 ja R2.

Painike

Komento

buttonA

controller.buttonA.pressing() — A-painike

buttonB

controller.buttonB.pressing() — B-painike

buttonDown

controller.buttonDown.pressing() — Alaspäin-painike

buttonUp

controller.buttonUp.pressing() — Ylös-painike

buttonL1

controller.buttonL1.pressing() — L1-painike

buttonL2

controller.buttonL2.pressing() — L2-painike

buttonL3

controller.buttonL3.pressing() — L3-painike

buttonR1

controller.buttonR1.pressing() — R1-painike

buttonR2

controller.buttonR2.pressing() — R2-painike

buttonR3

controller.buttonR3.pressing() — R3-painike

Parametrit

Kuvaus

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

# Turn right while L1 is pressed
while True:
    if controller.buttonL1.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

.position palauttaa joystick-akselin asennon lukuna väliltä -100 - 100.

Tätä metodia täytyy kutsua tietylle akseliobjektille, kuten controller.axis1.

Käyttö:
Yhtä käytettävissä olevista akseliobjekteista voidaan käyttää tämän metodin kanssa:

EXP-ohjaimen etupuoli, jossa joystickin akselinumerot on korostettu punaisella. Ohjaimen pinnalla vasen joystick on merkitty akselilla 4 vasemmalle ja oikealle liikettä varten ja akselilla 3 ylös- ja alas-liikettä varten, kun taas oikea joystick on merkitty akselilla 1 vasemmalle ja oikealle liikettä varten ja akselilla 2 ylös- ja alas-liikettä varten.

Akseli

Komento

axis1

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

axis2

controller.axis2.position() — Oikean joystickin pystyakseli

axis3

controller.axis3.position() — Vasemman joystickin pystyakseli

axis4

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

Parametrit

Kuvaus

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

# Turn with the left joystick
remote_control_code_enabled = False

while True:
    if controller.axis4.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.axis4.position() < -10:
        drivetrain.turn(LEFT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

Takaisinkutsut#

.pressed#

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

Käyttö:
Yhtä käytettävissä olevista painikeobjekteista voidaan käyttää tämän metodin kanssa:

EXP-ohjaimen etu- ja yläpuoli, jossa ohjaussauvat, nuolipainikkeet ja toimintopainikkeet on korostettu keltaisella. Ohjaimen pinnalla on kaksi ohjaussauvaa vasemmalla ja oikealla, ylös- ja alas-nuolinäppäimet vasemmalla ja A- ja B-painikkeet oikealla. Ohjaimen yläosassa ovat vasemmalla puolella L1 ja L2 ja oikealla puolella R1 ja R2.

Painike

Komento

buttonA

controller.buttonA.pressed(callback, arg) — A-painike

buttonB

controller.buttonB.pressed(callback, arg) — B-painike

buttonDown

controller.buttonDown.pressed(callback, arg) — Alaspäin-painike

buttonUp

controller.buttonUp.pressed(callback, arg) — Ylös-painike

buttonL1

controller.buttonL1.pressed(callback, arg) — L1-painike

buttonL2

controller.buttonL2.pressed(callback, arg) — L2-painike

buttonL3

controller.buttonL3.pressed(callback, arg) — L3-painike

buttonR1

controller.buttonR1.pressed(callback, arg) — R1-painike

buttonR2

controller.buttonR2.pressed(callback, arg) — R2-painike

buttonR3

controller.buttonR3.pressed(callback, arg) — R3-painike

Parametri

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. Lisätietoja on kohdassa Tapahtumien käyttö parametrien kanssa.

# Drive forward when R1 is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 200, MM)

controller.buttonR1.pressed(drive_forward)

.released#

.released suorittaa funktion, kun määritetty painike vapautetaan. Kun painiketta on käytetty, funktio suoritetaan automaattisesti joka kerta, kun painike vapautetaan.

Käyttö:
Yhtä käytettävissä olevista painikeobjekteista voidaan käyttää tämän metodin kanssa:

EXP-ohjaimen etu- ja yläpuoli, jossa ohjaussauvat, nuolipainikkeet ja toimintopainikkeet on korostettu keltaisella. Ohjaimen pinnalla on kaksi ohjaussauvaa vasemmalla ja oikealla, ylös- ja alas-nuolinäppäimet vasemmalla ja A- ja B-painikkeet oikealla. Ohjaimen yläosassa ovat vasemmalla puolella L1 ja L2 ja oikealla puolella R1 ja R2.

Painike

Komento

buttonA

controller.buttonA.released(callback, arg) — A-painike

buttonB

controller.buttonB.released(callback, arg) — B-painike

buttonDown

controller.buttonDown.released(callback, arg) — Alaspäin-painike

buttonUp

controller.buttonUp.released(callback, arg) — Ylös-painike

buttonL1

controller.buttonL1.released(callback, arg) — L1-painike

buttonL2

controller.buttonL2.released(callback, arg) — L2-painike

buttonL3

controller.buttonL3.released(callback, arg) — L3-painike

buttonR1

controller.buttonR1.released(callback, arg) — R1-painike

buttonR2

controller.buttonR2.released(callback, arg) — R2-painike

buttonR3

controller.buttonR3.released(callback, arg) — R3-painike

Parametri

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 Tapahtumien käyttö parametrien kanssa.

# Stop driving when R1 is released
def stop_driving():
    drivetrain.stop()

controller.buttonR1.released(stop_driving)

.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ö:
Yhtä käytettävissä olevista akseliobjekteista voidaan käyttää tämän metodin kanssa:

EXP-ohjaimen etupuoli, jossa joystickin akselinumerot on korostettu punaisella. Ohjaimen pinnalla vasen joystick on merkitty akselilla 4 vasemmalle ja oikealle liikettä varten ja akselilla 3 ylös- ja alas-liikettä varten, kun taas oikea joystick on merkitty akselilla 1 vasemmalle ja oikealle liikettä varten ja akselilla 2 ylös- ja alas-liikettä varten.

Akseli

Komento

axis1

controller.axis1.changed(callback, arg) — Oikean joystickin vaakasuora akseli

axis2

controller.axis2.changed(callback, arg) — Oikean joystickin pystyakseli

axis3

controller.axis3.changed(callback, arg) — Vasemman joystickin pystyakseli

axis4

controller.axis4.changed(callback, arg) — Vasemman joystickin vaakasuora akseli

Parametri

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 Tapahtumien käyttö parametrien kanssa.

# Play a sound when the left joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axis3.changed(beep)

Rakentajat#

Controller#

Controller luo Controller-objektin. Controller-objekti on luotava manuaalisesti vain, kun ohjainta konfiguroidaan VEXcoden ulkopuolella.

Usage:
Controller()

Parametrit

Kuvaus

Tällä konstruktorilla ei ole parametreja.

# Create a Controller object
my_controller = Controller()