ExSitu

Recherche et expérimentation artistique

Outils pour utilisateurs

Outils du site


Panneau latéral

prod:recherches:code:octows22811-library

Table des matières

[Code] OCTOWS2811B Library

OctoWS2811 est une bibliothèque performante dédiée au contrôle de LEDs adressable du type WS2811 , WS2812 & WS2812B. Écrite par Paul Stoffregen, elle permet la mise à jour simultanée de 8 LED strip utilisant un transfert de données efficace basé sur le DMA (Direct Memory Acces), détails techniques ci-dessous). L'impact minimal sur le processeur et la double mise en tampon permettent une animation complexe. L'association de cette librairie et du teensy 3.x permet des installations LED de grandes taille (en utilisant plusieurs Teensy 3.x) avec un signal de synchronisation de trame pour un timing de rafraîchissement précis.

Environ 1 000 LED par Teensy 3.0 ou 4000 par Teensy 3.2 sont recommandés pour les projets de grande ampleur afin de maintenir des performances élevées. Il est aussi possible d'utiliser un nombre quelconque de cartes Teensy pour augmenter le nombre de LED. Le signal de synchronisation vidéo doit être connecté à la broche 12 (valable sur toutes les cartes).

Téléchargement: installateur Teensyduino

Derniers développements sur Github

Usage basique

(ledsPerStrip, displayMemory, drawingMemory, config);
Un seul objet OctoWS2811 peut être créé, mais il doit être créé avec ces paramètres:

ledsPerStrip
Définit le nombre de LED connectées à chaque broche, ou le nombre maximum de LEDs sur chaque strip.

displayMemory
Définit la mémoire utilisée pour l'affichage des données.
Utiliser un tableau de “int” 6 fois ledsPerStrip.

drawingMemory
Définit la mémoire utilisée pour les opérations de dessin.
Utilisez un tableau de “int” 6 fois ledsPerStrip ou NULL pour effectuer tous les dessins directement dans la mémoire d'affichage.

config
Configure la vitesse des LEDs et l'ordre des couleurs.
Les options sont WS2811_RGB, WS2811_RBG, WS2811_GRB, WS2811_GBR, WS2811_800kHz, WS2811_400kHz.

leds.begin();

Initialise la la library. Ceci doit être fait avant d'utiliser setPixel or show.

leds.setPixel(num, red, green, blue);

Définit un pixel, R,G,B, de 0 à 255

leds.setPixel(num, color);

Définit un pixel. La couleur est en 24 bit en mode RGB (comme en html).

leds.show();

Lance la mise à jour des LEDs. Cette fonction s’exécute en 2 microsecondes. La mise à jour de l'écran se poursuit, prenant 30 microsecondes pour chaque LED et 50 microsecondes pour réinitialiser le WS2811. Si elle est appelée alors qu'une mise à jour précédente est en cours d'exécution, la fonction attend la fin de la MAJ précédente, puis lance une nouvelle mise à jour.

leds.busy(); 

Vérifie si le show() précédent est toujours en cours d'exécution. Renvoie “true” si les voyants WS2811 sont occupés ou en cours de mis à jour, ou “false” si aucune mise à jour n'est en cours.

leds.getPixel(num);

Lit la couleur d'un pixel's, Renvoie la couleur en 24 bits

BasicTest

Ce sketch peut être chargé à partir de Fichier> Exemples> OctoWS2811> BasicTest.

“BasicTest” est utile pour vérifier que vos LEDs fonctionnent et ensuite ce vous permettra de trouver la configuration colorimétrique correcte. La plupart des voyants WS2811 sont câblés pour WS2811_GRB. Si votre câblage est différent, les couleurs apparaîtront dans un ordre différent.


Un exemple VideoDisplay est présenté sur la principale source pjrc de ce document (anglais).

Sources

prod/recherches/code/octows22811-library.txt · Dernière modification: 17 12 2019 (modification externe)