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 – Returns whether the specified button is being pressed.

  • .position – Returns the position of the joystick’s specified axis.

  • is_connected – Returns whether the controller is connected.

  • get_battery_level – Returns the controller’s battery level as a percentage.

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

  • .pressed – Calls a function when the specified button is pressed.

  • .released – Calls a function when the specified button is released.

  • .changed – Calls a function when the joystick’s axis changes.

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

A function that is previously defined to execute when the specified button is being pressed.

arg

Optional. A tuple containing arguments to pass to the callback function. See Using Events with Parameters for more information.

# 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

A function that is previously defined to execute when the specified button is released.

arg

Optional. A tuple containing arguments to pass to the callback function. See Using Events with Parameters for more information.

# 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

A function that is previously defined to execute when the axis’ value changes.

arg

Optional. A tuple containing arguments to pass to the callback function. See Using Events with Parameters for more information.

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