Controlador#

Introducción#

El controlador One Stick cuenta con 4 botones y un joystick que funciona como entrada analógica y botón pulsable. Estas entradas permiten al robot detectar las pulsaciones de botones y los movimientos del joystick, lo que permite un control interactivo y sensible. A continuación, se muestra una lista de todos los métodos disponibles:

Getters: botón de lectura, joystick y estado de conexión.

  • .pressing – Devuelve si se está presionando el botón especificado.

  • .position – Devuelve la posición del eje especificado del joystick.

  • is_connected – Devuelve si el controlador está conectado.

  • get_battery_level – Devuelve el nivel de batería del controlador como un porcentaje.

Devoluciones de llamadas: responden a cambios en la entrada del botón o del joystick.

  • .pressed – Llama a una función cuando se presiona el botón especificado.

  • .released – Llama a una función cuando se suelta el botón especificado.

  • .changed – Llama a una función cuando cambia el eje del joystick.

Captadores#

.pressing#

.pressing devuelve un entero que indica si un botón específico del controlador está presionado. Este método debe llamarse en un objeto de botón específico, como button_up (ver la lista completa de objetos de botón a continuación).

  • 1 - Se está presionando el botón especificado.

  • 0 - No se está presionando el botón especificado.

Uso:
Se puede usar uno de los cinco objetos de botón disponibles con este método, como se muestra a continuación:

botón

Dominio

button_up

controller.button_up.pressing() — El botón Arriba

button_down

controller.button_down.pressing() — El botón Abajo

button_left

controller.button_left.pressing() — El botón izquierdo

button_right

controller.button_right.pressing() — El botón Derecho

button_stick

controller.button_stick.pressing() — El botón Joystick

ajustes

Parámetros

Descripción

Este método no tiene parámetros.

# Move forwards while the Up button is being pressed
while True:
    if controller.button_up.pressing():
        robot.move_at(0)
    else:
        robot.stop_all_movement()

.position#

.position devuelve la posición del eje especificado del joystick como un entero de –100 a 100, que representa un porcentaje.

Uso:

Se puede utilizar uno de los dos ejes disponibles con este método, como se muestra a continuación:

botón

Dominio

axis1

controller.axis1.position() — El eje vertical

axis2

controller.axis2.position() — El eje horizontal

ajustes

Parámetros

Descripción

Este método no tiene parámetros.

while True:
    if controller.axis1.position() > 0:
        # Move forward when the joystick is moved up
        robot.move_at(0)
    else:
        # Stop moving when the joystick is centered
        robot.stop_all_movement()

is_connected#

is_connected devuelve un valor booleano que indica si el controlador está conectado.

  • True: el controlador está conectado.

  • False: el controlador no está conectado.

Uso:

controller.is_connected()

Parámetros

Descripción

Este método no tiene parámetros.

# Start moving forward.
# When the Controller disconnects, the robot stops.
robot.move_at(0)
while True:
    if not controller.is_connected():
        robot.stop_all_movement()
    wait(100, MSEC)

get_battery_level#

get_battery_level devuelve el nivel de batería del controlador como un entero de 0 a 100, que representa un porcentaje.

Uso:

controller.get_battery_level()

Parámetros

Descripción

Este método no tiene parámetros.

# Display the Controller's battery level.
robot.screen.print(controller.get_battery_level())

Devoluciones de llamadas#

.pressed#

.pressed registra una función que se llamará al presionar un botón específico del controlador. Este método debe llamarse en un objeto de botón específico, como button_up (ver la lista completa de objetos de botón a continuación).

Uso:
Se puede usar uno de los cinco objetos de botón disponibles con este método, como se muestra a continuación:

botón

Dominio

button_up

controller.button_up.pressed(callback, arg) — El botón Arriba

button_down

controller.button_down.pressed(callback, arg) — El botón Abajo

button_left

controller.button_left.pressed(callback, arg) — El botón izquierdo

button_right

controller.button_right.pressed(callback, arg) — El botón Derecho

button_stick

controller.button_stick.pressed(callback, arg) — El botón Joystick

ajustes

Parámetros

Descripción

llamar de vuelta

Una función que se define previamente para ejecutarse cuando se presiona el botón especificado.

arg

Opcional. Una tupla que contiene los argumentos que se pasarán a la función de devolución de llamada. Consulte Uso de eventos con parámetros para obtener más información.

# Kick hard when Up button is pressed
def kick_object():
    robot.kicker.kick(HARD)

controller.button_up.pressed(kick_object)

.released#

.released registra una función que se llamará al soltar un botón específico del controlador. Este método debe llamarse en un objeto de botón específico, como button_up (ver la lista completa de objetos de botón a continuación).

Uso:
Se puede usar uno de los cinco objetos de botón disponibles con este método, como se muestra a continuación:

botón

Dominio

button_up

controller.button_up.released(callback, arg) — El botón Arriba

button_down

controller.button_down.released(callback, arg) — El botón Abajo

button_left

controller.button_left.released(callback, arg) — El botón Izquierdo

button_right

controller.button_right.released(callback, arg) — El botón Derecho

button_stick

controller.button_stick.released(callback, arg) — El botón Joystick

ajustes

Parámetros

Descripción

llamar de vuelta

Una función que se define previamente para ejecutarse cuando se suelta el botón especificado.

arg

Opcional. Una tupla que contiene los argumentos que se pasarán a la función de devolución de llamada. Consulte Uso de eventos con parámetros para obtener más información.

# Clear the text after the Up button is released
def clear_screen():
    robot.screen.clear_screen(BLUE)

controller.button_up.released(clear_screen)

robot.screen.print("Press Up, then")
robot.screen.next_row()
robot.screen.print("Release Up!")

.changed#

.changed registra una función que se llamará cuando cambie la posición del joystick.

Uso:
Se puede utilizar uno de los dos ejes disponibles con este método, como se muestra a continuación:

botón

Dominio

axis1

controller.axis1.changed() — El eje vertical

axis2

controller.axis2.changed() — El eje horizontal

ajustes

Parámetros

Descripción

llamar de vuelta

Una función que se define previamente para ejecutarse cuando cambia el valor del eje.

arg

Opcional. Una tupla que contiene los argumentos que se pasarán a la función de devolución de llamada. Consulte Uso de eventos con parámetros para obtener más información.

# Function to display an emoji when the joystick is moved
def move_joystick():
    robot.screen.show_emoji(CONFUSED)

# Run the function when the joystick is moved up or down
controller.axis1.changed(move_joystick)