Gestion d’un ruban de leds

Module Python stripleds

Introduction

Le module Python stripleds est conçu pour piloter un ruban LED WS2812 connecté à un Arduino. Il permet de charger, configurer et exécuter des animations lumineuses complexes à partir de fichiers de définition textuels. Ce manuel inclut un exemple détaillé de fichier texte compatible avec la méthode load.


Prérequis

Matériel

  • Un Arduino (par ex. Mega, Uno, Nano) connecté à un ruban LED WS2812.
  • Un ruban LED WS2812 avec alimentation adaptée au nombre de LEDs.
  • Connexion USB entre l’Arduino et l’ordinateur.

Logiciel

  1. Python 3.6 ou supérieur.
  2. Installation de la bibliothèque pyserial :
Shell

3. Code C préchargé sur l’Arduino pour interpréter les commandes suivantes :

  • CLEAR : Réinitialiser les animations.
  • ADD <définition> : Ajouter une définition (animation, tableau, ou scène).
  • START <scene_id> : Démarrer une scène.
  • STOP : Arrêter toutes les animations en cours.
  • BRIGHTNESS <valeur> : Régler la luminosité.
  • STATUS : Obtenir l’état actuel.

Initialisation

Création de l’Objet

Python

Paramètres

  • port : Port série de l’Arduino (ex. : COM3 ou /dev/ttyUSB0).
  • baud_rate : Taux de transfert série (par défaut : 9600).
  • leds_number : Nombre total de LEDs sur le ruban.
  • run : Active l’envoi de commandes série si True.
  • debug : Affiche les commandes dans la console si True.

Méthodes Disponibles

1. Effacer les Définitions : clear_definitions()

Réinitialise les définitions (animations, tableaux, scènes) sur l’Arduino.

Python

2. Ajouter une Définition : add_definition(definition)

Ajoute une définition (animation, tableau, ou scène).

  • Paramètre definition : Une chaîne de texte interprétée par l’Arduino.

Exemple :

Python

3. Démarrer une Scène : start_scene(scene_id)

Démarre une scène spécifique.

  • Paramètre scene_id : Identifiant de la scène (par ex., s1).

Exemple :

Python

4. Arrêter les Animations : stop_scene()

Arrête toutes les animations en cours.

Python

5. Régler la Luminosité : set_brightness(brightness)

Définit l’intensité lumineuse (valeur de 0 à 255).

Exemple :

Python

6. Obtenir le Statut : get_status()

Récupère des informations sur l’état actuel du système.

Exemple :

Python

7. Charger un Fichier de Définitions : load(definitions_path)

Charge un fichier texte contenant des définitions d’animations, tableaux et scènes.

Format d’un Fichier de Définitions

Un fichier de définitions contient trois types d’éléments :

  • Animations (aX) : Définitions des animations appliquées à un groupe de LEDs.
  • Tableaux (tX) : Combinaisons de plusieurs animations avec durée.
  • Scènes (sX) : Combinaisons de tableaux exécutés en séquence.

Exemple de Fichier Compatible

Python

Chargement du Fichier

Python

Le fichier peut inclure des commentaires (lignes commençant par #).

Les lignes vides ou les définitions incorrectes seront ignorées.

8. Fermer la Connexion : close()

Ferme le port série proprement.

Python

Exemple Complet

Python

Conseils Pratiques

  1. Validation des Définitions : Avant d’exécuter une animation, assurez-vous que le fichier de définitions correspond aux fonctionnalités implémentées dans le firmware Arduino.
  2. Test de Communication Série : Utilisez un terminal série pour vérifier les commandes envoyées et leur réponse.
  3. Gestion de l’Alimentation : Assurez-vous que votre alimentation est suffisante pour le nombre de LEDs configurées.

Manuel d’utilisation du firmware « stripleds »


Introduction

Le firmware « stripleds » contrôle un ruban LED WS2812 pour générer des animations lumineuses personnalisées. Il est conçu pour être utilisé sur une plateforme Arduino (ex. Mega), avec la bibliothèque FastLED. Ce manuel décrit en détail les fonctionnalités, la structure et les commandes pour exploiter efficacement le programme.


Caractéristiques principales

  1. Animations lumineuses personnalisées :
    • Blink (clignotement)
    • Static (couleur fixe)
    • Rainbow (arc-en-ciel)
    • Fire (feu)
    • Heartbeat (battement de cœur)
    • Snowfall (chute de neige)
    • Smoke (fumée)
    • Caterpillar (chenillard)
  2. Définition des animations :
    • Jusqu’à 16 animations simultanées.
    • Possibilité de regrouper des animations dans des tableaux.
    • Organisation des tableaux dans des scènes.
  3. Commandes en temps réel :
    • Gestion via le port série.
    • Commandes pour ajouter, démarrer ou arrêter des scènes et animations.
  4. Support d’effets avancés :
    • Palette de couleurs prédéfinies.
    • Gestion des effets dynamiques (flocons, fumée, etc.).
  5. Configuration flexible :
    • Jusqu’à 300 LEDs supportées (modifiable dans le code).
    • Paramètres des animations adaptables (zones, couleurs, durées, etc.).

Installation

Matériel requis :

  • Microcontrôleur : Arduino Mega ou équivalent.
  • Ruban LED WS2812 (jusqu’à 300 LEDs).
  • Résistance 470 Ω entre le DATA_PIN (broche 5) et l’entrée du ruban LED.
  • Condensateur 1000 µF (facultatif, pour stabiliser l’alimentation).

Connexion :

  1. Connectez le DATA_PIN (broche 5) à l’entrée Data du ruban.
  2. Branchez le GND de l’Arduino au GND du ruban.
  3. Connectez une alimentation externe (adaptée au nombre de LEDs).

Utilisation du programme

Démarrage :

  1. Téléversez le programme sur l’Arduino via l’IDE Arduino.
  2. Ouvrez le moniteur série, configurez le baudrate à 9600.
  3. Le programme est prêt à recevoir des commandes série.

Commandes disponibles

1. Gestion des définitions

  • CLEAR
    • Supprime toutes les animations, tableaux et scènes.
    • Réponse : OK Cleared definitions
  • ADD <definition>
    • Ajoute une animation, un tableau ou une scène.
    • Format des définitions :
      • Animation : id,animation,type,start,end,period,color1,color2
      • Tableau : id,tableau,duration,animation1,animation2,...
      • Scène : id,scene,tableau1,tableau2,...
    • Exemple : ADD a1,animation,blink,0,10,500,red,blue
    • Réponse : OK Animation added ou ER Invalid definition

2. Gestion des scènes

  • START <scene_id>
    • Lance l’exécution d’une scène.
    • Réponse : OK Started scene ou ER Scene not found
  • STOP
    • Arrête la scène en cours.
    • Réponse : OK Stopped scene

3. État du programme

  • STATUS
    • Vérifie si une scène est en cours.
    • Réponse : running ou idle

4. Luminosité globale

  • BRIGHTNESS <value>
    • Définit la luminosité du ruban (0 à 255).
    • Exemple : BRIGHTNESS 128
    • Réponse : OK 128

Définitions détaillées

1. Animation

ChampDescription
idIdentifiant unique (ex. a1)
typeType d’animation (blink, static, etc.)
startLED de début
endLED de fin
periodPériode en millisecondes
color1Couleur principale
color2Couleur secondaire

Exemple : ADD a1,animation,blink,0,50,500,red,blue


2. Tableau

ChampDescription
idIdentifiant unique (ex. t1)
durationDurée d’exécution (secondes)
animationsListe des animations à inclure

Exemple : ADD t1,tableau,30,a1,a2


3. Scène

ChampDescription
idIdentifiant unique (ex. s1)
tableauxListe des tableaux à exécuter

Exemple : ADD s1,scene,t1,t2


Effets supportés

EffetDescription
blinkLEDs alternent entre deux couleurs.
staticLEDs affichent une couleur fixe.
rainbowEffet arc-en-ciel sur la zone spécifiée.
fireSimule des flammes réalistes.
heartbeatSimule un battement de cœur.
snowfallSimule la chute de neige.
smokeSimule des particules de fumée en mouvement.
caterpillarChenillard avec des couleurs dynamiques.

Maintenance et dépannage

  1. LEDs éteintes :
    • Vérifiez l’alimentation et les connexions.
    • Envoyez STATUS pour vérifier l’état du programme.
  2. Animation incorrecte :
    • Assurez-vous que les définitions sont valides.
    • Supprimez tout avec CLEAR et réessayez.
  3. Problèmes de performance :
    • Réduisez le nombre de LEDs ou la fréquence des animations.

Source module python

Python

Source firmware Arduino

C

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *