ruban-neopixel.ino

Arduino UNO R4 WiFi · Fichier : ruban-neopixel.ino · Langage : Arduino · Usage : Animation de ruban NeoPixel pilotée par le R4

Les WS2812 exigent des timing serrés : le core R4 les génère proprement via les timers du RA4M1. Une tête blanche suivie d'une traînée colorée sert de premier banc d'essai d'adresseables sur la carte.

Matériel requis

Une Arduino UNO R4 WiFi (Renesas RA4M1 @ 14 MHz + ESP32-S3 Wi-Fi/BLE compagnon, matrice LED 12x8, LED RGB) alimentée par USB ou 6-24 V. 1 ruban 16 LED NeoPixel + alimentation 5 V externe.

Câblage

Data sur D6 via résistance 330 Ω, VCC sur 5 V externe, GND commun avec le R4.

Fonctionnement

setPixelColor remplit le tampon, show() envoie la trame WS2812 d'un bloc. Le modulo fait tourner la tête le long du ruban à ~14 Hz.

Exécution

Arduino IDE 2.x avec le core « Arduino UNO R4 Boards », carte « Arduino UNO R4 WiFi », port série puis Téléverser. Le coprocesseur ESP32-S3 se met à jour séparément si l'IDE le demande.

Variantes

Synchroniser le ruban avec le DAC (sortie audio) ou la matrice LED (R4 WiFi) pour un spectacle lumineux combiné.

ruban-neopixel.ino

// Ruban NeoPixel 16 LED sur D6 (Adafruit_NeoPixel sur core R4).
#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel ruban(16, 6, NEO_GRB + NEO_KHZ800);

unsigned long t0 = 0;
int tete = 0;

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

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

  ruban.clear();
  ruban.setPixelColor(tete, ruban.Color(255, 255, 255));
  for (int i = 1; i <= 4; i++) {
    int pos = (tete - i + 16) % 16;
    ruban.setPixelColor(pos, ruban.Color(255 - i * 55, 40, 120));
  }
  ruban.show();
  tete = (tete + 1) % 16;
}

// La trame WS2812 est generee par timers/DMA du RA4M1 :
// le rendu est impeccable meme a pleine vitesse.

← Retour à la fiche