vezérlő#

Bevezetés#

A V5 vezérlő gombokkal, két joystick-kal, egy rezgőmotorral és egy képernyővel rendelkezik. A vezérlőmetódusok segítségével ellenőrizhető a gombnyomások jelzése, leolvasható a joystick mozgása, rezegtethető a vezérlő, engedélyezhető vagy letiltható a konfigurált vezérlőműveletek, funkciók futtathatók vezérlőesemények bekövetkeztekor, vagy szöveg jeleníthető meg a vezérlő képernyőjén.

A konfigurált vezérlőműveletek az Eszközök menüben beállított vezérlőviselkedések. remote_control_code_enabled paraméterrel ideiglenesen engedélyezheti vagy letilthatja ezeket a konfigurált műveleteket egy projekt során.

Ez az oldal controller_1 nevet használja példaként a vezérlő nevére. Szükség szerint cserélje ki a saját konfigurált névre.

Az alábbiakban felsoroljuk az összes elérhető módszert:

Műveletek – A kontroller rezegtetése, illetve a konfigurált kontrollerműveletek engedélyezése/letiltása.

  • rumble — Morajló mintát játszik le a vezérlőn.

  • remote_control_code_enabled — Engedélyezi vagy letiltja az Eszközök menüben konfigurált vezérlőműveleteket.

Képernyő – Szöveg és számok megjelenítése a vezérlő képernyőjén.

  • print — Szöveget, számokat vagy változóértékeket jelenít meg a Vezérlő képernyőjén.

  • set_cursor — A kurzort a megadott sorra és oszlopra mozgatja a Vezérlő képernyőjén.

  • column — Visszaadja az aktuális kurzor oszlopot a Vezérlő képernyőjén.

  • row — Visszaadja az aktuális kurzor sorát a Vezérlő képernyőjén.

  • clear_screen — Törli a Vezérlő képernyőjét.

  • clear_row — Töröl egy sort a Vezérlő képernyőjén.

  • next_row — A kurzort a vezérlőképernyő következő sorába mozgatja.

Getterek – Gombállapotok és joystick pozíciók beolvasása.

  • .pressing — Visszaadja, hogy egy adott gombot lenyomnak-e.

  • .position — Visszaadja a megadott joystick tengely pozícióját.

Visszahívások — Függvények futtatása, amikor a vezérlő bemenete megváltozik.

  • .pressed — Egy függvényt futtat, amikor egy megadott gombot megnyomnak.

  • .released — Egy függvényt futtat, amikor egy megadott gombot elengednek.

  • .changed — Függvényt futtat, amikor a joystick helyzete egy megadott tengely mentén megváltozik.

Konstruktor — Controller objektum manuális létrehozása.

  • Controller — Létrehoz egy Controller objektumot.

Műveletek#

rumble#

rumble Az 1-es beállítás egy rumble mintát játszik le a vezérlőn. A minta karakterláncban a pontok rövid rumble-öket, a kötőjelek hosszú rumble-öket, a szóközök pedig szüneteket jelölnek.

Usage:
controller_1.rumble(pattern)

Paraméter

Leírás

pattern

Pontokból, kötőjelekből és szóközökből álló karakterlánc, amely a morajlási mintát jelöli.

# Rumble the Controller with a short-short-long-long pattern
controller_1.rumble("..--")

remote_control_code_enabled#

remote_control_code_enabled egy változó, amely engedélyezi vagy letiltja az Eszközök menüben konfigurált vezérlőműveleteket. A vezérlő által konfigurált műveletek alapértelmezés szerint engedélyezve vannak.

Usage:
remote_control_code_enabled = state

Érték

Leírás

True

Engedélyezi a vezérlő által konfigurált műveleteket.

False

Letiltja a vezérlő által konfigurált műveleteket.

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

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

    wait(20, MSEC)

remote_control_code_enabled = True

Képernyő#

A V5 vezérlő képernyője 3 sorral és 19 oszloppal rendelkezik a szöveg és a számok megjelenítéséhez.

A V5 vezérlő képernyőjének képernyőképe, amelyen a nyomtatható terület sorai és oszlopai láthatók. 1. sor, 1. oszlop Az 1. oszlop a bal felső sarokban kezdődik, a 3. sor 19. oszlopa pedig a jobb alsó sarokban található.

print#

controller_1.screen.print szöveget, számokat vagy változó értékeket jelenít meg a vezérlő képernyőjén az aktuális kurzorpozíció felhasználásával.

Usage:
controller_1.screen.print(value, sep, precision)

Paraméter

Leírás

value

A vezérlő képernyőjén megjelenítendő szöveg, szám vagy változó értéke. Egynél több érték is kinyomtatható vesszővel elválasztva.

sep

Opcionális. Egy karakterlánc, amelyet az értékek közé kell helyezni. Ezt kulcsszó argumentumként kell megírni, például sep=”- “. Az alapértelmezett érték ” “.

precision

Opcionális. Az egyszerű számok nyomtatásakor megjelenítendő tizedesjegyek száma. Ezt kulcsszó argumentumként kell megadni, például precision=2Az alapértelmezett érték 2.

# Print a number on the Controller screen
controller_1.screen.print(1)

# Print multiple numbers separated by hyphens
controller_1.screen.print(1, 2, 3, 4, sep="-")

# Print a number using one decimal place
controller_1.screen.print(1 / 3, precision=1)

set_cursor#

set_cursor A kurzort a megadott sorra és oszlopba mozgatja a vezérlő képernyőjén. A következő kinyomtatott érték ezen a pozíción fog megjelenni.

Usage:
controller_1.screen.set_cursor(row, col)

Paraméter

Leírás

row

A kurzor sora, 1 től 3.

col

A kurzor oszlopa, 1 től 19.

# Print text at row 2, column 1
controller_1.screen.set_cursor(2, 1)
controller_1.screen.print("Ready")

column#

A column visszaadja az aktuális oszlopot, ahová a szöveg ki lesz nyomtatva a vezérlő képernyőjén.

Usage:
controller_1.screen.column()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# Print the current column number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.column())

row#

row visszaadja az aktuális sort, ahová a szöveg ki lesz nyomtatva a vezérlő képernyőjén.

Usage:
controller_1.screen.row()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# Print the current row number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.row())

clear_screen#

clear_screen parancs törli a vezérlő képernyőjét, és visszahelyezi a kurzort a kiindulási pozícióba.

Usage:
controller_1.screen.clear_screen()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# Print text, then clear the Controller screen
controller_1.screen.print("VEX V5")
wait(2, SECONDS)
controller_1.screen.clear_screen()

clear_row#

clear_row Kitöröl egy sort a Vezérlő képernyőjén.

Usage:
controller_1.screen.clear_row(row)

Paraméter

Leírás

row

Opcionális. A törlendő sor 1 től 3. Ha nincs megadva sor, akkor az aktuális kurzorsor törlődik.

# Clear row 2 on the Controller screen
controller_1.screen.clear_row(2)

next_row#

next_row parancs a kurzort a Vezérlő képernyő következő sorának 1. oszlopába mozgatja. A következő kinyomtatott érték ezen a sorban fog megjelenni.

Usage:
controller_1.screen.next_row()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# Print on two rows
controller_1.screen.print("VEX V5")
controller_1.screen.next_row()
controller_1.screen.print("Controller")

Getterek#

.pressing#

.pressing visszaadja, hogy a Controller egy adott gombja jelenleg le van-e nyomva. Ezt a metódust egy adott gomb objektumon kell meghívni, például controller_1.buttonA metóduson.

  • True — A megadott gombot megnyomják.

  • False — A megadott gombot nem nyomják meg.

Használat:
Az egyik elérhető gombobjektum használható ezzel a metódussal:

A V5 kontroller eleje és hátulja, a gombok sárgával kiemelve. A kontroller felületén bal oldalon fel, le, balra és jobbra mutató nyílgombok, jobb oldalon pedig 12 órától az óramutató járásával megegyező irányban működő X, A, B és Y gombok találhatók. A kontroller hátulján balra, jobbra az L1, L2, R1 és R2 található.

Gomb

Parancs

buttonA

controller_1.buttonA.pressing() — Az A gomb

buttonB

controller_1.buttonB.pressing() — A B gomb

buttonX

controller_1.buttonX.pressing() — Az X gomb

buttonY

controller_1.buttonY.pressing() — Az Y gomb

buttonDown

controller_1.buttonDown.pressing() — A Le gomb

buttonUp

controller_1.buttonUp.pressing() — A Fel gomb

buttonLeft

controller_1.buttonLeft.pressing() — A Balra gomb

buttonRight

controller_1.buttonRight.pressing() — A Jobbra gomb

buttonL1

controller_1.buttonL1.pressing() — Az L1 gomb

buttonL2

controller_1.buttonL2.pressing() — Az L2 gomb

buttonR1

controller_1.buttonR1.pressing() — Az R1 gomb

buttonR2

controller_1.buttonR2.pressing() — Az R2 gomb

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

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

    wait(20, MSEC)

.position#

.position függvény visszaadja a joystick tengelyének pozícióját -100 és 100 közötti számként.

Ezt a metódust egy adott tengelyobjektumon kell meghívni, például controller_1.axis1 értéken.

Használat:
Az egyik elérhető tengelyobjektum használható ezzel a metódussal:

Egy VEX V5 vezérlő, amelyen a joystickok körüli tengelyek fel vannak tüntetve. Az 1. és 2. tengely a jobb oldali joystick körül, a 3. és 4. tengely pedig a bal oldali körül található.

Tengely

Parancs

axis1

controller_1.axis1.position() — A jobb joystick vízszintes tengelye

axis2

controller_1.axis2.position() — A jobb joystick függőleges tengelye

axis3

controller_1.axis3.position() — A bal oldali joystick függőleges tengelye

axis4

controller_1.axis4.position() — A bal oldali joystick vízszintes tengelye

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# Turn with the left joystick
remote_control_code_enabled = False

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

    wait(20, MSEC)

Visszahívások#

.pressed#

.pressed parancs futtat egy függvényt, amikor a megadott gombot megnyomják. Használat után a függvény minden alkalommal automatikusan lefut, amikor a gombot megnyomják.

Használat:
Az egyik elérhető gombobjektum használható ezzel a metódussal:

A V5 kontroller eleje és hátulja, a gombok sárgával kiemelve. A kontroller felületén bal oldalon fel, le, balra és jobbra mutató nyílgombok, jobb oldalon pedig 12 órától az óramutató járásával megegyező irányban működő X, A, B és Y gombok találhatók. A kontroller hátulján balra, jobbra az L1, L2, R1 és R2 található.

Gomb

Parancs

buttonA

controller_1.buttonA.pressed(callback, arg) — Az A gomb

buttonB

controller_1.buttonB.pressed(callback, arg) — A B gomb

buttonX

controller_1.buttonX.pressed(callback, arg) — Az X gomb

buttonY

controller_1.buttonY.pressed(callback, arg) — Az Y gomb

buttonDown

controller_1.buttonDown.pressed(callback, arg) — A Le gomb

buttonUp

controller_1.buttonUp.pressed(callback, arg) — A Fel gomb

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — A Balra gomb

buttonRight

controller_1.buttonRight.pressed(callback, arg) — A Jobbra gomb

buttonL1

controller_1.buttonL1.pressed(callback, arg) — Az L1 gomb

buttonL2

controller_1.buttonL2.pressed(callback, arg) — Az L2 gomb

buttonR1

controller_1.buttonR1.pressed(callback, arg) — Az R1 gomb

buttonR2

controller_1.buttonR2.pressed(callback, arg) — Az R2 gomb

Paraméter

Leírás

callback

Egy korábban definiált függvény, amely a megadott gomb minden megnyomásakor lefut.

arg

Opcionális. Egy tuple, amely argumentumokat tartalmaz a visszahívó függvénynek átadandó. További információkért lásd: Események használata paraméterekkel.

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

controller_1.buttonA.pressed(drive_forward)

.released#

.released függvény a megadott gomb elengedésekor futtat egy függvényt. Használat után a függvény minden alkalommal automatikusan lefut, amikor a gombot elengedjük.

Használat:
Az egyik elérhető gombobjektum használható ezzel a metódussal:

A V5 kontroller eleje és hátulja, a gombok sárgával kiemelve. A kontroller felületén bal oldalon fel, le, balra és jobbra mutató nyílgombok, jobb oldalon pedig 12 órától az óramutató járásával megegyező irányban működő X, A, B és Y gombok találhatók. A kontroller hátulján balra, jobbra az L1, L2, R1 és R2 található.

Gomb

Parancs

buttonA

controller_1.buttonA.released(callback, arg) — Az A gomb

buttonB

controller_1.buttonB.released(callback, arg) — A B gomb

buttonX

controller_1.buttonX.released(callback, arg) — Az X gomb

buttonY

controller_1.buttonY.released(callback, arg) — Az Y gomb

buttonDown

controller_1.buttonDown.released(callback, arg) — A Le gomb

buttonUp

controller_1.buttonUp.released(callback, arg) — A Fel gomb

buttonLeft

controller_1.buttonLeft.released(callback, arg) — A Balra gomb

buttonRight

controller_1.buttonRight.released(callback, arg) — A Jobbra gomb

buttonL1

controller_1.buttonL1.released(callback, arg) — Az L1 gomb

buttonL2

controller_1.buttonL2.released(callback, arg) — Az L2 gomb

buttonR1

controller_1.buttonR1.released(callback, arg) — Az R1 gomb

buttonR2

controller_1.buttonR2.released(callback, arg) — Az R2 gomb

Paraméter

Leírás

callback

Egy korábban definiált function, amely minden alkalommal lefut, amikor a megadott gombot elengedik.

arg

Opcionális. Egy tuple, amely argumentumokat tartalmaz a visszahívó függvénynek átadandó. További információkért lásd: Események használata paraméterekkel.

# Drive backward when A is released
def back_up():
    drivetrain.drive_for(REVERSE, 100, MM)

controller_1.buttonA.released(back_up)

.changed#

.changed függvény akkor futtat le egy függvényt, amikor a joystick pozíciója megváltozik a megadott tengely mentén. Használat után a függvény automatikusan lefut minden alkalommal, amikor a joystick pozíciója megváltozik az adott tengely mentén.

Használat:
Az egyik elérhető tengelyobjektum használható ezzel a metódussal:

Egy VEX V5 vezérlő, amelyen a joystickok körüli tengelyek fel vannak tüntetve. Az 1. és 2. tengely a jobb oldali joystick körül, a 3. és 4. tengely pedig a bal oldali körül található.

Tengely

Parancs

axis1

controller_1.axis1.changed(callback, arg) — A jobb joystick vízszintes tengelye

axis2

controller_1.axis2.changed(callback, arg) — A jobb joystick függőleges tengelye

axis3

controller_1.axis3.changed(callback, arg) — A bal oldali joystick függőleges tengelye

axis4

controller_1.axis4.changed(callback, arg) — A bal oldali joystick vízszintes tengelye

Paraméter

Leírás

callback

Egy korábban definiált függvény, amely minden alkalommal lefut, amikor a joystick pozíciója a megadott tengely mentén megváltozik.

arg

Opcionális. Egy tuple, amely argumentumokat tartalmaz a visszahívó függvénynek átadandó. További információkért lásd: Események használata paraméterekkel.

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

controller_1.axis4.changed(tada_sound)

Konstruktorok#

Controller#

Controller vezérlő létrehoz egy Controller objektumot. A Controller objektum manuális létrehozására csak akkor van szükség, ha a vezérlőt a VEXcode-on kívül konfiguráljuk.

Usage:
Controller(controller_type)

Paraméter

Leírás

controller_type

Opcionális. A létrehozandó Vezérlő típusa: PRIMARY az Agyhoz csatlakoztatott elsődleges Vezérlőhöz vagy PARTNER az Agyhoz csatlakoztatott második Vezérlőhöz.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)