ruban-neopixel.ino

Teensy 4.1 · Fichier : ruban-neopixel.ino · Langage : Arduino · Usage : Ruban NeoPixel avec bibliothèque native FastLED-compatible

Un dégradé bleu-vert sinusoïdal glisse sur 24 LED NeoPixel. Le CPU 32 bits très rapide du Teensy calcule les couleurs en flottant à 25 images/s sans effort, ce qu'un AVR ne peut pas se permettre.

Matériel requis

Un Teensy 4.1 (NXP i.MX RT1062, Cortex-M7 @ 600 MHz, logique 3,3 V, Ethernet et stockage flash additionnel) alimenté par USB. 1 ruban 24 LED NeoPixel (WS2812B) + alimentation 5 V externe.

Câblage

Data sur la broche 22 (résistance 330 Ω), VCC sur 5 V externe, GND commun avec le Teensy (3,3 V tolérant 5 V en data).

Fonctionnement

setPixelColor charge la mémoire tampon, show() envoie la trame WS2812. Le déphasage sinusoïdal par index crée une vague continue animée à 25 Hz.

Exécution

Teensyduino dans l'Arduino IDE, carte « Teensy 4.1 », Téléverser puis bouton du Teensy Loader. Broches 3,3 V ; le 4.1 ajoute Ethernet, USB host et broches supplémentaires.

Variantes

Utiliser la bibliothèque Audio pour synchroniser les couleurs sur un microphone, ou FastLED pour des effets prêts à l'emploi.

ruban-neopixel.ino

// Ruban NeoPixel via la bibliotheque Adafruit_NeoPixel (core Teensy OK).
#include <Adafruit_NeoPixel.h>

const int PIN = 22;
const int NB = 24;
Adafruit_NeoPixel ruban(NB, PIN, NEO_GRB + NEO_KHZ800);

uint32_t bleu = ruban.Color(0, 0, 200);
uint32_t vert = ruban.Color(0, 200, 0);

unsigned long t0 = 0;

void setup() {
  ruban.begin();
  ruban.setBrightness(80);
  Serial.begin(9600);
}

void loop() {
  if (millis() - t0 < 40) return;
  t0 = millis();

  static float phase = 0;
  phase += 0.08;

  for (int i = 0; i < NB; i++) {
    // Gradient deplace : interpolation sinusoidale bleu/vert.
    float x = 0.5 + 0.5 * sinf(phase + i * 0.35);
    uint8_t r = 0;
    uint8_t g = (uint8_t)(x * 255);
    uint8_t b = (uint8_t)((1.0 - x) * 255);
    ruban.setPixelColor(i, ruban.Color(r, g, b));
  }
  ruban.show();
}

← Retour à la fiche