Salut à tous,
Je me tourne vers vous car j'ai débuté un projet il y a deux ans (avant la naissance de ma fille) pour créer un compteur d’abonnés YouTube.
À l'époque, j’ai sorti mes deux neurones dédiés à l’électronique (et encore, pas sûr d’en avoir deux pour ça
), mais miraculeusement, j’ai réussi à créer mes propres modules de LED WS2812B.
Mon projet de module est en images ci-jointes.
ATTENTION : J’ai inversé la sérigraphie des bornes 5V et GND (erreur de fabrication
) mais c'est juste une erreur de sérigraphie pas de circuiterie.
Je voulais calquer le fonctionnement de mes modules sur celui des rubans de LED WS2812B classiques, avec la possibilité d'assembler plusieurs modules en série.
Détail des modules :
Chaque module contient 16 LEDs WS2812B 5050
Chaque Led est précédé d'un condensateur entre le +5v et le Gnd.
Les modules sont connectables en série (DOUT → DIN)
L’alimentation est en 5V
Mon problème :
Maintenant que je suis devenu un papa bidouilleur, j’ai enfin décidé de finaliser mon projet.
J’ai donc investi dans un ESP32 D1 Mini Live (WiFi + Bluetooth) pour la partie logicielle.
Mais… rien ne fonctionne comme prévu ! ![]()
La 16e LED de chaque module s’allume en même temps que la 1ère du module suivant.
Elles se comportent comme si elles étaient jumelées !
Ce que j’ai déjà testé :
Avant de venir ici, j’ai essayé plusieurs solutions avec l’aide de mon cher ami ChatGPT (20€/mois
) :
Ajout d’une résistance de 300Ω puis 470Ω sur la ligne DATA
Ajout d’un condensateur de 0.1µF (104) sur l’alimentation
Vérification des connexions GND et 5V
Test avec un simple ruban LED WS2812B → Aucun problème
Modification du délai de reset (FastLED et Adafruit NeoPixel testés)
Utilisation d’un code de test simple pour voir le comportement des modules
Voici le code de base que j’ai utilisé pour tester mes modules et observer le problème :
#include <Adafruit_NeoPixel.h>
#define LED_PIN 16 // Broche utilisée pour le signal DATA des LEDs
#define NUM_LEDS 50 // 5 modules de 10 LEDs chacun
#define BRIGHTNESS 100 // Luminosité (0-255)
Adafruit_NeoPixel strip(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(115200);
Serial.println("Démarrage du test LEDs WS2812B-B !");
strip.begin();
strip.setBrightness(BRIGHTNESS);
strip.show(); // Éteint toutes les LEDs au démarrage
delayMicroseconds(1000); // Pause plus longue pour WS2812B-B
}
void loop() {
Serial.println("Mode 1: Remplissage Rouge Lent");
clearLeds();
testLeds(strip.Color(255, 0, 0), 1000); // 🔹 Lent
delay(2000);
Serial.println("Mode 2: Clignotement Bleu");
clearLeds();
blinkLeds(strip.Color(0, 0, 255));
delay(2000);
Serial.println("Mode 3: Arc-en-ciel");
clearLeds();
rainbowEffect();
delay(2000);
}
// Fonction pour éteindre toutes les LEDs
void clearLeds() {
strip.clear();
strip.show();
delayMicroseconds(1000); // Pause plus longue
}
// Fonction pour allumer les LEDs progressivement (lentement ou rapidement)
void testLeds(uint32_t color, int vitesse) {
for(int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, color);
strip.show();
delay(vitesse);
}
delay(500);
}
// Fonction pour faire clignoter les LEDs
void blinkLeds(uint32_t color) {
for(int j = 0; j < 5; j++) {
for(int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, color);
}
strip.show();
delay(500);
clearLeds();
delay(500);
}
}
// Effet arc-en-ciel sur 50 LEDs
void rainbowEffect() {
for(int k = 0; k < 256; k++) {
for(int i = 0; i < NUM_LEDS; i++) {
int hue = (i * 256 / NUM_LEDS) + k;
strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(hue)));
}
strip.show();
delay(50); // Ajuste ici pour ralentir ou accélérer l'effet arc-en-ciel
}
}
Ce que j’observe avec ce code
Quand je teste ce code, la 16e LED de chaque module s’allume en même temps que la 1ère du module suivant.
Même si je ne demande pas d’allumer le second module, sa première LED réagit comme si elle était "liée" à la dernière du précédent.
J'ai dû essayer une trentaine de code différents, avec des modifications de timing, de rafraichissement, des modifications de comptages des leds et même en codant comme s'il s'agissait d'une seule et même bande led ... bref (et j'en passe) mais rien n'y fait. Je suppose donc que c'est un problème matériel ???
Hypothèses possibles selon chat GPT :
Problème de conception de mes modules (mauvais routage du signal DATA ?)
Erreur dans le buffer interne des WS2812B ?
Niveau logique trop faible pour transmettre correctement le signal entre les modules ?
Besoin d’un buffer logique type 74AHCT125 pour amplifier le signal DATA ?
Si quelqu’un a déjà rencontré ce type de problème avec des modules LED WS2812B personnalisés, je suis preneur de vos conseils.
Je suis quasiment sûr que la solution est simple, mais je ne trouve pas ce qui cloche dans ma conception.
Merci d’avance à tous pour votre aide ! ![]()
Nicolas




