🛠 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.

Objectifs

Passer du pixel unique au bandeau d'adressables en comprenant la couche matérielle : sur ESP32-S3, la bibliothèque Adafruit NeoPixel génère les trames WS2812 (800 kHz) avec le périphérique RMT (Remote Control), un générateur d'impulsions piloté par DMA. Vous écrirez un animographe « balayage » sur 8 pixels, vous dimensionnerez l'alimentation (un WS2812 blanc pur tire jusqu'à 60 mA) et vous éviterez les corruption de trame liées aux interruptions Wi-Fi.

Matériel

Code complet

// 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 démarrage
}

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

Vérification attendue

Un point orange balaie le bandeau en aller-retour avec une traîne atténuée. Les 8 pixels répondent de façon homogène, sans pixel vert fou. En ouvrant le moniteur série, on peut afficher ESP.getFreeHeap pour vérifier que la RAM interne (512 Ko) reste confortable : la bibliothèque alloue une copie du tampon pixel et configure un canal RMT.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels