🛠 Bandeau NeoPixel piloté par le périphérique RMT

ESP32-S3 · intermediaire · Schéma : IMG-esp32-s3-intermediaire-1-esp32-s3-neopixel-rmt.svg — Bandeau de 8 pixels WS2812 alimenté en 5 V via le bus USB, données reliées à GPIO48 par une résistance de 330 ohm, masse commune avec la carte ESP32-S3.

Objetivos

Pasar del píxel único a la tira de direccionables comprendiendo la capa de hardware: en ESP32-S3, la biblioteca Adafruit NeoPixel genera las tramas WS2812 (800 kHz) con el periférico RMT (Remote Control), un generador de impulsos controlado por DMA. Escribirás una animación de «barrido» sobre 8 píxeles, dimensionarás la alimentación (un WS2812 en blanco puro consume hasta 60 mA) y evitarás las corrupciones de trama relacionadas con las interrupciones de Wi-Fi.

Material

Código completo

// Bandeau 8x WS2812 sur GPIO48, trames generees par le peripherique RMT
#include <Adafruit_NeoPixel.h>
#define PIN      48
#define N        8

Adafruit_NeoPixel strip(N, PIN, NEO_GRB + NEO_KHZ800);

uint32_t couleur(uint8_t r, uint8_t g, uint8_t b) {
  return strip.Color(r, g, b);
}

void setup {
  strip.begin;
  strip.setBrightness(60);
  strip.show;                      // eteint tout au demarrage
}

void loop {
  static uint8_t pos = 0;
  static int8_t  dir = 1;
  strip.clear;
  strip.setPixelColor(pos, couleur(255, 80, 0));          // tete
  if (pos > 0)        strip.setPixelColor(pos - 1, couleur(90, 30, 0));
  if (pos < N - 1)    strip.setPixelColor(pos + 1, couleur(90, 30, 0));
  strip.show;
  if (pos == 0) dir = 1; else if (pos == N - 1) dir = -1;
  pos += dir;
  delay(60);
}

Verificación esperada

Un punto naranja barre la tira de ida y vuelta con una estela atenuada. Los 8 píxeles responden de forma homogénea, sin píxeles verdes erráticos. Al abrir el monitor serie, se puede mostrar ESP.getFreeHeap para verificar que la RAM interna (512 KB) siga siendo holgada: la biblioteca asigna una copia del búfer de píxeles y configura un canal RMT.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales