ruban-neopixel.ino

Arduino UNO R4 Minima · 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 Minima (Renesas RA4M1, Cortex-M4 @ 14 MHz, 5 V, DAC 12 bits, sans radio) 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 (core « Arduino UNO R4 Boards » installé), choisir « Arduino UNO R4 Minima », sélectionner le port et Téléverser. Le moniteur série est à 9600.

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