Periféricos Integrados (LED y Button)

El LEGO WeDo 2.0 Smart Hub incorpora un LED multicolor y un botón pulsador integrados directamente en la placa principal, accesibles a través de hub.led y hub.button.

from wedopy import LED, Button

Clase LED

Controla el diodo emisor de luz multicolor del Hub. Permite seleccionar colores predefinidos mediante índices o colores personalizados mediante componentes RGB (rojo, verde y azul).

Métodos

on()

hub.led.on() -> None

Enciende el LED en color blanco a máxima intensidad (equivalente a rgb(255, 255, 255)).

off()

hub.led.off() -> None

Apaga el LED (equivalente a rgb(0, 0, 0)).

index(index)

hub.led.index(index: int) -> None

Aplica uno de los colores predefinidos de la paleta oficial de WeDo 2.0 (enteros entre 0 y 10 o mediante las constantes de color disponibles en wedopy o en la clase LED).

Índice Constante Alias / Alias ES Color visual
0 OFF BLACK, APAGADO Apagado
1 PINK ROSA Rosa
2 PURPLE VIOLET, MORADO Morado
3 BLUE AZUL Azul
4 CYAN SKY_BLUE, LIGHT_BLUE, CIAN, CELESTE Celeste / Cian
5 GREEN VERDE Verde
6 YELLOW AMARILLO Amarillo
7 ORANGE NARANJA Naranja
8 RED ROJO Rojo
9 WHITE BRIGHT_WHITE, BLANCO Blanco brillante
10 DIM_WHITE SOFT_WHITE, BLANCO_TENUE Blanco tenue
from wedopy import Hub, GREEN, RED, LED

with Hub() as hub:
    # Usando la constante directamente
    hub.led.index(GREEN)

    # O a través de la clase o la instancia
    hub.led.index(LED.RED)
    hub.led.index(hub.led.BLUE)

rgb(red, green, blue)

hub.led.rgb(red: int, green: int, blue: int) -> None

Establece un color personalizado mediante canales de 8 bits (0 a 255).

  • Parámetros:
    • red (int): Intensidad del canal rojo (0..255).
    • green (int): Intensidad del canal verde (0..255).
    • blue (int): Intensidad del canal azul (0..255).
# Color turquesa personalizado
hub.led.rgb(0, 200, 180)

Clase Button

Permite consultar el estado actual del botón pulsador central del Smart Hub.

Propiedades

is_pressed

hub.button.is_pressed -> bool

Devuelve True si el botón físico está siendo presionado en este instante, o False si está libre.

is_released

hub.button.is_released -> bool

Devuelve True si el botón físico no está presionado (inverso de is_pressed).


💡 Ejemplo interactivo: Botón de cambio de color

import time
from wedopy import Hub

with Hub() as hub:
    color = 1
    print("Pulsa el botón central para cambiar el color del LED (Ctrl+C para salir)")

    while True:
        if hub.button.is_pressed:
            hub.led.index(color)
            color = (color % 10) + 1
            # Esperar a que se libere el botón (evita rebotes)
            while hub.button.is_pressed:
                time.sleep(0.05)
        time.sleep(0.05)