Bande led WS2812B : problème aléatoire

Bonjour,

Je me lance pour la 1ere fois dans un projet Arduino. Et pour commencer, je dois simplement (enfin je pensais...) contrôler une bande led.
J'ai donc acheter une bande WS2812B 30 leds adressable individuellement ainsi qu'un UNO R3.

Le problème que je rencontre et que je n'arrive pas à gérer chaque led, le comportement de la bande est assez chaotique, si je tente d'allumer uniquement la 1ere led, c'est des leds et couleurs aléatoires qui s'allument (sans récurrence particulière etc...). Si je boucle sur toutes les leds, même choses évidemment.

J'alimente le tout par une alimentation externe de 5V/2A. J'y ai mis en amont un condensateur de 1000uF.
Je relis le DIN de la bande sur la sortie 6 du UNO, avec une résistance de 470 Ohms entre.

J'ai tenté avec 2 bandes différentes, en connectant le GND directement sur le UNO ou non. J'ai essayé sans résistance, en USB plutôt qu'avec l'alimentation, rien n'y fais j'ai toujours le même résultat.

Voila le code de test :

#include "FastLED.h"


#define NUM_LEDS 30
#define DATA_PIN 6


// Define the array of leds
CRGB leds[NUM_LEDS];

void setup() {
  FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);

}

void loop() {

  test();
  delay(5000);
}

void test() {
  leds[0] = CHSV(0,0,100);
  FastLED.show();

Et des photos du petit montage en PJ. les fils rouges sont bien évidemment reliés sur la ligne +5V, et les blancs/noirs sur une ligne GND.

Je commence donc à désespérer ! ^^ Des idées ?

Bonjour,

Tu as mesuré la tension 5V?

Et non n'ayant pas de multimètre sous la main en ce moment...
L'alimentation est neuve mais c'est tout de même pour ça que j'ai tenté en USB.

Tu as essayé une autre lib à tout hasard ? J'utilise Neopixel d'Adafruit ..

Essaye peut-être de mettre ‘WS2812’ à la place de ‘WS2812B’ comme type de leds, ça fait parfois une grosse différence !

AlainGourves:
Essaye peut-être de mettre ‘WS2812’ à la place de ‘WS2812B’ comme type de leds, ça fait parfois une grosse différence !

Déjà essayé également, j'ai tenté pas mal de modèle dans le code :confused:

BrUnO14200:
Tu as essayé une autre lib à tout hasard ? J'utilise Neopixel d'Adafruit ..

ça je n'ai pas essayé ! ça me paraitrait bizarre, apparemment la plus part des gens utilisent FastLed pour ce type de bande mais je vais tenter !

Juste comme ça , tu aurais surement une erreur de compilation mais il manque une accolade à la fin de ton test() :wink: !

En matière de bandes de leds, les bonnes pratiques sont ici. Vérifie que tu as bien fait comme ils disent.

Notamment pour l'alimentation du ruban, selon ce schéma


Alimentation séparée pour le ruban, capable de fournir un courant de 60 mA multiplié par le nombre de leds, soit 2 A pour toi. Les GND doivent être connectés entre l'arduino et le ruban.

Oui tout me parait quasi identique hormis que pour l'alimentation j'utilise la même pour l'Arduino et la bande, comme sur ce schema et beaucoup de tuto/vidéos que j'ai vu (avec le condensateur en plus)

Elle fait 2A donc suffisante pour les 30 leds à pleines puissance.
Et pour le GND j'ai tout tenté... sur l'alim, sur l'arduino, sur les 2...

En même temps, ton code n'allume que la première led :

  leds[0] = CHSV(0,0,100);
  FastLED.show();

Si tu veux les allumer toutes, essaye ça:

 fill_gradient(leds, 0, CHSV(0,255,255), NUM_LEDS-1, CHSV(128,255,255), SHORTEST_HUES);
FastLED.show();

ou bien

fill_rainbow( leds, NUM_LEDS, 0, 7);
FastLED.show();

lesept:
En même temps, ton code n'allume que la première led :

C'est justement le soucis, j'ai fait ce test pour n'allumer qu'une led, hors c'est des plusieurs leds aleatoires sur la bande qui s'allument.

As-tu essayé d’alimenter l’Arduino et le ruban séparément : l’Arduino via l’USB et le ruban via ton alimentation en enlevant le fil entre le 5V de l’Arduino et ton PCB ?

Sinon une petite remarque : dans ton code, je remplacerais bien CHSV(0,0,100) qui est sensé donner un genre de blanc pâle par quelque chose comme CHSV(0,255,255) (rouge) pour avoir un résultat bien franc.

AlainGourves:
As-tu essayé d’alimenter l’Arduino et le ruban séparément : l’Arduino via l’USB et le ruban via ton alimentation en enlevant le fil entre le 5V de l’Arduino et ton PCB ?

Sinon une petite remarque : dans ton code, je remplacerais bien CHSV(0,0,100) qui est sensé donner un genre de blanc pâle par quelque chose comme CHSV(0,255,255) (rouge) pour avoir un résultat bien franc.

C'est ce que j'ai essayé ce matin ^^ et j'obtiens le même résultat...

Pour ce qui est du code, j'ai déjà essayé différentes combinaisons, dans tous les cas je résultat est le même est assez franc, puisque c'est des leds de différentes couleurs qui s'allument.

mrfloww:
C'est justement le soucis, j'ai fait ce test pour n'allumer qu'une led, hors c'est des plusieurs leds aléatoires sur la bande qui s'allument.

Tu définis

#define NUM_LEDS 30

et tu n'en allumes qu'une : c'est bizarre. Peut-être que ce cas n'est pas traité dans la bibliothèque. Il faut peut-être mettre les 29 autres leds à 0 ?
Sinon, essaye

#define NUM_LEDS 1

ou essaye avec les lignes de code que je t'ai fournies, qui allument toutes les leds.

Je définis qu'il y a 30 leds pour faire mon test je ne cherche à en allumer qu'une seule, ou une par une avec une boucle... mais ça ne fonctionne pas il y en a plusieurs qui s'allument.

BrUnO14200 m'a mis sur la voie ! en suivant son conseil j'ai essayé avec la lib Neopixel plutôt que FastLed et... BINGO ça fonctionne. le problème étant que pour la suite je vais avoir besoin d'un contrôle très rapide et je ne suis pas sur que Neopixel suffise...
Pourquoi ça ne fonctionne pas avec FastLed ? je pense au fait que ma bande vient d'AliExpress et que le chips n'est peut etre pas un WS2812B exactement... difficile à dire...

Tu peux toujours essayer WS2812 dans l'ajout des leds.

Ou WS2811 qui fonctionne parfois aussi

As-tu essayé de mettre les 29 autres leds à 0 ?

Ca donne quoi l'essai d'une autre lib ?

lesept:
As-tu essayé de mettre les 29 autres leds à 0 ?

Oui bien sur, je commence par ça d'ailleurs.
Quand je met tout à 0, la situation est normale : aucune LED allumée.
Dès que j'en allume 1, c'est chaotique.

BrUnO14200:
Ca donne quoi l'essai d'une autre lib ?

Et bien je suis en train de faire différent test et comme je disais, avec Neopixel ça fonctionne !
J'avais peur qu'elle ne soit pas assez performante pour la suite (j'ai besoin de contrôle très très rapide) mais pour l'instant elle semble très bien réagir à ce que je lui demande !
Je pense donc que je vais laisser tomber FastLed et rester comme ça. ma curiosité me poussera surement à retester FastLed avec une bande qui ne vient pas d'AliExpress... mais pour le moment je continu mon projet comme ça.

Merci à tous en tout cas pour votre aide !