rgb_status_led_ws2812.py

Unit 4-Encoder Motor Driver (DRV8837DSGR) · File : rgb_status_led_ws2812.py · Language : Python · Use case : Utilisation de la LED RGB WS2812C intégrée pour afficher l'état du système.

Control of the embedded RGB LED to signal states (e.g., error, running) via a simplified I2C interface.

The WS2812C LED is generally driven by the internal STM32. This code assumes the firmware exposes a register to change the color. Check the technical documentation for exact LED registers (often requiring a 3-byte or larger buffer).

rgb_status_led_ws2812.py

import smbus
import time

ADDR = 0x24
bus = smbus.SMBus(1)

# Registre de contrôle LED (Exemple fictif basé sur architecture M5Stack)
# Souvent les LEDs WS2812 sont contrôlées par un registre dédié ou via SPI interne
# Ici, on suppose un registre de commande LED accessible via I2C
REG_LED_CTRL = 0x50

# Fonction pour envoyer une couleur (R, G, B)
def set_led_color(r, g, b):
    # Les WS2812 nécessitent souvent un format spécifique ou un buffer
    # Exemple simplifié : Écriture directe si le firmware supporte le mapping RGB direct
    # Sinon, il faut envoyer la séquence GRB
    data = [g, r, b] # WS2812 est souvent GRB
    try:
        # Note : Vérifier si le module accepte les écritures de bloc pour la LED
        # ou s'il faut passer par un registre de mode puis de valeur
        bus.write_i2c_block_data(ADDR, REG_LED_CTRL, data)
    except:
        print("Erreur LED")

def blink_red():
    while True:
        set_led_color(255, 0, 0)
        time.sleep(0.5)
        set_led_color(0, 0, 0)
        time.sleep(0.5)

if __name__ == "__main__":
    print("Test LED Rouge")
    blink_red()

← Back to the board