Ohjain#

Johdanto#

VEX IQ (2. sukupolvi) -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ä.

IQ (2. sukupolvi) aivot voidaan yhdistää joko IQ (2. sukupolvi)- tai IQ (1. sukupolvi) -ohjaimeen. IQ (1. sukupolvi) -ohjaimessa on oltava asennettuna sininen älyradio.

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.

# Use custom controller code, then re-enable configured actions
remote_control_code_enabled = False

while True:
    if controller.axisA.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axisA.position() < 0:
        drivetrain.drive(REVERSE)
    elif controller.buttonEUp.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.buttonEUp.

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

IQ 2. sukupolven ohjaimen etu- ja takakuva, jossa kaikki painikkeet on korostettu keltaisella. Ohjaimen pinnalla on kaksi joystick-painiketta vasemmassa ja oikeassa yläkulmassa, E ylös ja alas vasemman joystickin alapuolella ja F ylös ja alas oikean alapuolella. Ohjaimen takaosassa ovat L ylös ja alas vasemmalla ja R ylös ja alas oikealla puolella.

Painike

Komento

buttonEDown

controller.buttonEDown.pressing() — E ▼ -painike

buttonEUp

controller.buttonEUp.pressing() — E ▲ -painike

buttonFDown

controller.buttonFDown.pressing() — F ▼ -painike

buttonFUp

controller.buttonFUp.pressing() — F ▲ -painike

buttonL3

controller.buttonL3.pressing() — Vasen ohjaussauvan painike, vain IQ (2. sukupolvi) -ohjaimessa

buttonLDown

controller.buttonLDown.pressing() — L ▼ -painike

buttonLUp

controller.buttonLUp.pressing() — L ▲ -painike

buttonR3

controller.buttonR3.pressing() — Oikea joystick-painike, vain IQ (2. sukupolvi) -ohjaimessa

buttonRDown

controller.buttonRDown.pressing() — R ▼ -painike

buttonRUp

controller.buttonRUp.pressing() — R ▲ -painike

Parametrit

Kuvaus

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

# Turn right while E Up is held
while True:
    if controller.buttonEUp.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.axisA.

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

IQ 2. sukupolven ohjain, jossa neljä joystickin akselia on korostettu. Vasemmassa joystickissa akseli A on pystysuora ja akseli B on vaakasuora. Oikeassa joystickissa akseli C on vaakasuora ja akseli D on pystysuora.

Akseli

Komento

axisA

controller.axisA.position() — Vasemman joystickin pystyakseli

axisB

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

axisC

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

axisD

controller.axisD.position() — Oikean joystickin pystyakseli

Parametrit

Kuvaus

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

# Turn with the left joystick
remote_control_code_enabled = False

while True:
    if controller.axisB.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.axisB.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:

IQ 2. sukupolven ohjaimen etu- ja takakuva, jossa kaikki painikkeet on korostettu keltaisella. Ohjaimen pinnalla on kaksi joystick-painiketta vasemmassa ja oikeassa yläkulmassa, E ylös ja alas vasemman joystickin alapuolella ja F ylös ja alas oikean alapuolella. Ohjaimen takaosassa ovat L ylös ja alas vasemmalla ja R ylös ja alas oikealla puolella.

Painike

Komento

buttonEDown

controller.buttonEDown.pressed(callback, arg) — E ▼ -painike

buttonEUp

controller.buttonEUp.pressed(callback, arg) — E ▲ -painike

buttonFDown

controller.buttonFDown.pressed(callback, arg) — F ▼ -painike

buttonFUp

controller.buttonFUp.pressed(callback, arg) — F ▲ -painike

buttonL3

controller.buttonL3.pressed(callback, arg) — Vasen ohjaussauvan painike, vain IQ (2. sukupolvi) -ohjaimessa

buttonLDown

controller.buttonLDown.pressed(callback, arg) — L ▼ -painike

buttonLUp

controller.buttonLUp.pressed(callback, arg) — L ▲ -painike

buttonR3

controller.buttonR3.pressed(callback, arg) — Oikea joystick-painike, vain IQ (2. sukupolvi) -ohjaimessa

buttonRDown

controller.buttonRDown.pressed(callback, arg) — R ▼ -painike

buttonRUp

controller.buttonRUp.pressed(callback, arg) — R ▲ -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 E Up is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 100, MM)

controller.buttonEUp.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:

IQ 2. sukupolven ohjaimen etu- ja takakuva, jossa kaikki painikkeet on korostettu keltaisella. Ohjaimen pinnalla on kaksi joystick-painiketta vasemmassa ja oikeassa yläkulmassa, E ylös ja alas vasemman joystickin alapuolella ja F ylös ja alas oikean alapuolella. Ohjaimen takaosassa ovat L ylös ja alas vasemmalla ja R ylös ja alas oikealla puolella.

Painike

Komento

buttonEDown

controller.buttonEDown.released(callback, arg) — E ▼ -painike

buttonEUp

controller.buttonEUp.released(callback, arg) — E ▲ -painike

buttonFDown

controller.buttonFDown.released(callback, arg) — F ▼ -painike

buttonFUp

controller.buttonFUp.released(callback, arg) — F ▲ -painike

buttonL3

controller.buttonL3.released(callback, arg) — Vasen ohjaussauvan painike, vain IQ (2. sukupolvi) -ohjaimessa

buttonLDown

controller.buttonLDown.released(callback, arg) — L ▼ -painike

buttonLUp

controller.buttonLUp.released(callback, arg) — L ▲ -painike

buttonR3

controller.buttonR3.released(callback, arg) — Oikea joystick-painike, vain IQ (2. sukupolvi) -ohjaimessa

buttonRDown

controller.buttonRDown.released(callback, arg) — R ▼ -painike

buttonRUp

controller.buttonRUp.released(callback, arg) — R ▲ -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 E Up is released
def stop_driving():
    drivetrain.stop()

controller.buttonEUp.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:

IQ 2. sukupolven ohjain, jossa neljä joystickin akselia on korostettu. Vasemmassa joystickissa akseli A on pystysuora ja akseli B on vaakasuora. Oikeassa joystickissa akseli C on vaakasuora ja akseli D on pystysuora.

Akseli

Komento

axisA

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

axisB

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

axisC

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

axisD

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

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 right joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axisD.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()