ruban-neopixel.ino

Teensy 3.2 · Archivo : ruban-neopixel.ino · Lenguaje : Arduino · Uso : Ruban NeoPixel avec bibliothèque native FastLED-compatible

Un degradado sinusoidal azul-verde se desliza por 24 LED NeoPixel. La rápida CPU de 32 bits del Teensy calcula los colores en coma flotante a 25 fps sin esfuerzo, algo que un AVR no puede permitirse.

Hardware

Un Teensy 3.2 (NXP Kinetis MK20DX256, Cortex-M4 @ 72 MHz, lógica de 3,3 V) alimentado por USB. 1 tira de 24 LED NeoPixel (WS2812B) + alimentación externa de 5 V.

Cableado

Data al pin 22 (resistencia de 330 Ω), VCC a 5 V externo, GND común con el Teensy (pin de datos tolerante a 5 V).

Funcionamiento

setPixelColor carga el búfer, show() envía la trama WS2812. El desfase sinusoidal por índice crea una onda continua animada a 25 Hz.

Ejecución

Instala el plugin Teensyduino en el Arduino IDE, elige la placa « Teensy 3.2 », pulsa Subir y luego el botón del Teensy Loader. Atención: pines de 3,3 V.

Variantes

Usa la librería Audio para sincronizar los colores con un micrófono, o FastLED para efectos listos.

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();
}

← Volver a la ficha