🛠 Mur de LEDs et panneaux HUB75 : OctoWS2811, WS2812Serial et SmartMatrix sur le 4.1
Objectifs
Le Teensy 4.1 est la référence des murs de LEDs grâce à trois moteurs DMA : OctoWS2811 (rafraîchit 1 920+ LEDs à 30 Hz et, spécificité du 4.1, sur un nombre de broches parallèles quelconque — la limite de 8 broches des Teensy 3.x saute), WS2812Serial (jusqu'à 8 instances DMA non bloquantes sur ports série) et SmartMatrix (panneaux HUB75 de 32x16 jusqu'à 128x64 avec le SmartLED Shield v4/v5). Le tout avec un CPU quasi libre pour l'animation.
Matériel
- 1 Teensy 4.1 + câble micro-USB de données
- Rubans WS2812B avec alimentation 5 V dédiée (les données restent en 3,3 V : le Teensy alimente les données, pas les LEDs)
- Pour HUB75 : un SmartLED Shield v4 ou v5 et un panneau compatible
Points clés
- OctoWS2811 réserve les broches et les timers qu'il pilote — notamment les canaux QuadTimer4, réservés par la bibliothèque : ne les utilisez pas ailleurs.
- WS2812Serial est non bloquant : chaque instance est un port série DMA dédié, idéal quand l'animation tourne par ailleurs.
- SmartMatrix sur le 4.1 exploite le Pixel Processing Pipeline naissant — PJRC le décrit encore comme très expérimental ; la bibliothèque elle-même est mature.
- La règle électrique absolue : les broches du Teensy ne tolèrent que 3,3 V ; les données WS2812 acceptent en général le niveau 3,3 V comme seuil haut, mais en cas de ruban capricieux, un translateur 3,3 V → 5 V côté données est la solution propre.
Démarche (OctoWS2811)
- Installez la bibliothèque via le Library Manager ou https://www.pjrc.com/teensy/td_libs_OctoWS2811.html.
- Déclarez
OctoWS2811 leds(ledsPerStrip, displayType, octoPins)avec vos broches parallèles. leds.beginpuis dessinez avecleds.setPixel(index, color)etleds.update— un seul update DMA rafraîchit tous les rubans.- Pour l'exemple vidéo complet (1920 LEDs), suivez la page OctoWS2811 de PJRC.
Démarche (SmartMatrix)
- Montez le SmartLED Shield v4/v5, réglez la résolution du panneau dans SM_config.h (le 4.1 accepte jusqu'à 128x64).
- Exemples d'animation GIF et compatibilité FastLED fournis par la bibliothèque.
Vérification attendue
Des rubans entiers s'animent à 30 Hz ou plus sans à-coups pendant que Serial et vos capteurs continuent de tourner : c'est la signature des transferts DMA. La température du die reste raisonnable (voir le tutoriel mémoire pour la surveiller).
Erreurs fréquentes
- Alimentation LEDs prise sur le 3,3 V du Teensy : sortie réservée au régulateur embarqué, 250 mA max — un mur de LEDs s'alimente en 5 V externe, masses reliées.
- Oublier la résistance de série (~330 Ω) sur la ligne de données et le condensateur sur l'alimentation du premier ruban.
- Confondre les trois bibliothèques : OctoWS2811 = broches parallèles synchrones ; WS2812Serial = ports série DMA ; SmartMatrix = panneaux HUB75.
- Suivre un vieux câblage JTAG : les broches JTAG ont déménagé en juin 2022 sur le 4.1 — vérifiez la date de votre carte avant de suivre un guide ancien.
Autres tutoriels pour cette carte
- Premiers pas sur le Teensy 4.1 : Teensyduino, Teensy Loader et premier Blink
- GPIO et PWM sur le Teensy 4.1 : 55 broches en 3,3 V, ni 5 V tolérées ni traîne
- Entrées analogiques du Teensy 4.1 : 18 broches, 2 ADC, 0-3,3 V fixes et zéro DAC
- Logger sur carte SD via le port SDIO natif du Teensy 4.1
- Serveur web embarqué : l'Ethernet natif 10/100 du Teensy 4.1 (DP83825)
- Boîte à rythmes USB MIDI : classes MIDI, MIDIx16 et port hôte USBHost_t36
Exemples de code pour cette carte
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino