lattepanda-sigma2-rp2350-ws2812b-rgb-10.ino

LattePanda Sigma 2 : Serveur monocarte Intel Core Ultra X7 358H · Fichier : lattepanda-sigma2-rp2350-ws2812b-rgb-10.ino · Langage : micropython · Usage : Piloter une bande de LEDs adressables WS2812B via le microcontrôleur RP2350 pour un affichage visuel d'état système.

Script MicroPython utilisant la bibliothèque machine et neopixel pour contrôler des LEDs WS2812B connectées à la broche GPIO du RP2350. Idéal pour visualiser l'état de charge CPU ou les alertes réseau.

Connectez la broche DATA d'une bande WS2812B à une broche GPIO disponible du connecteur RP2350 (ex: GP15), VCC au 3.3V et GND à la terre. Assurez-vous que la bande LED est alimentée séparément si elle dépasse 500mA pour éviter de griller le RP2350. Transférez ce script dans le RP2350 via Thonny ou l'interface série, puis exécutez-le. Les broches spécifiques peuvent varier, consultez le schéma officiel LattePanda pour la correspondance physique exacte.

lattepanda-sigma2-rp2350-ws2812b-rgb-10.ino

from machine import Pin
import neopixel
import time
import math

# Configuration du hardware
# Sur LattePanda Sigma 2, le RP2350 expose des broches GPIO via un connecteur.
# Supposons que la broche physique connectée au DATA de la bande LED soit GP15 (à vérifier selon votre schéma câblage).
PIN_LED = 15
NUM_LEDS = 8  # Nombre de LEDs sur la bande

# Initialisation de la bande LED
np = neopixel.NeoPixel(Pin(PIN_LED), NUM_LEDS)

def set_color(r, g, b):
    for i in range(NUM_LEDS):
        np[i] = (r, g, b)
    np.write()
    time.sleep(0.1)

def rainbow_cycle(wait):
    for j in range(255):
        for i in range(NUM_LEDS):
            pix_index = (i * 255 // NUM_LEDS + j) & 255
            np[i] = colorwheel(pix_index)
        np.write()
        time.sleep(wait)

def colorwheel(pos):
    if pos < 0 or pos > 255:
        return (0, 0, 0)
    if pos < 85:
        return (255 - pos * 3, pos * 3, 0)
    if pos < 170:
        pos -= 85
        return (0, 255 - pos * 3, pos * 3)
    pos -= 170
    return (pos * 3, 0, 255 - pos * 3)

print("Démarrage de la démo RGB sur RP2350...")

# Séquence de test
try:
    # 1. Allumer tout en rouge
    set_color(255, 0, 0)
    time.sleep(0.5)
    
    # 2. Allumer tout en vert
    set_color(0, 255, 0)
    time.sleep(0.5)
    
    # 3. Allumer tout en bleu
    set_color(0, 0, 255)
    time.sleep(0.5)
    
    # 4. Effet arc-en-ciel
    rainbow_cycle(0.01)
    
    # 5. Effet progressif (simulation de charge CPU)
    for i in range(NUM_LEDS + 1):
        np.clear()
        for j in range(i):
            # Vert pour faible charge, rouge pour haute
            intensity = int(255 * (j / NUM_LEDS))
            np[j] = (intensity, 255 - intensity, 0)
        np.write()
        time.sleep(0.1)
        
    # Extinction propre
    np.fill(0)
    np.write()
    print("Terminé.")

except KeyboardInterrupt:
    np.fill(0)
    np.write()
    print("Interruption manuelle.")

← Retour à la fiche