[Résolu] Problème ruban de leds RGB WS2812B

Bonjour à tous!

Je poste ici suite à l'achat d'une bande de 60 leds RGB qui marche avec le contrôleur WS2812B.
J'ai donc fait l'acquisition de ce ruban et je n'ai toujours pas réussi à faire marcher ces satanés leds. =( J'ai commencé par essayer de faire moi même les programmes en assembly en suivant la bonne vieille devise du DIY mais ne voyant pas de résultat j'ai sauvagement pris des codes trouvés sur le net... J'utilise donc la librairie FastLED qui a l'air de faire du bien travail... Mais rien ne marche et je n'ai toujours pas de lumière...
J'utilise une Arduino UNO R3
Je fais tous les branchements nécessaires et j'ai essayé différentes combinaisons:

  • Deux des 4 fils d'alim reliés à l'Arduino.
  • Les 4 fils d'alim reliés à l'Arduino.
  • Deux des 4 fils d'alim sur alimentation externe (avec ref de base commun évidemment).
  • Les 4 fils d'alim sur alimentation externe.
    Il y a 4 fils d'alim mais ça semblent plus se présenter comme deux sortes différentes de brancher le ruban, assez bizarre.

Bref après avoir essayé plusieurs branchements et codes différents je suis à court d'idée et je fais appel à vous...

Je vous mets le code que j'utilise actuellement:

#include "FastLED.h"

// How many leds in your strip?
#define NUM_LEDS 60

// For led chips like Neopixels, which have a data line, ground, and power, you just
// need to define DATA_PIN.  For led chipsets that are SPI based (four wires - data, clock,
// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN
#define DATA_PIN 8
#define EVERY_NTH

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

void setup() { 
  delay(2000);
      LEDS.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
 
      memset(leds, 0, NUM_LEDS * sizeof(struct CRGB));
}

void loop()
{
 
  // set all the LEDs to white
  for(int i = 0; i < NUM_LEDS; i++) {
  leds[i].r = 255; leds[i].g = 255; leds[i].b = 255;
  }
  LEDS.show();
  delay(1000);
  
   for(int i = 0; i < NUM_LEDS; i++) {
  leds[i].r = 150; leds[i].g = 150; leds[i].b = 150;
  }
  LEDS.show();
  delay(1000);
}

J'attends avec impatience vos suggestions, c'est relativement urgent puisque le système doit être fini pour ce Lundi soir!
Merci d'avance!

Bonsoir,

Je ne connais pas FastLED. J'ai utilisé avec succès la librairie NeoPixels d'Adafruit.

Côté branchement, ton ruban de leds a 4 broches : les Alims +5V et GND, DI (Data Input) et DO (Data Output).

60 WS2812 consomment 3,2A plein pots. Il faut donc une alimentation 5V séparée de celle de l'Arduino. Il faut une capa chimique aux bornes de cette alim séparée pour absorber les pics de tension à la mise en route et éviter d'endommager les leds. Je mets une 470µF.

Les GND de l'Arduino et de l'alim séparée doivent être reliées ensemble. Le 5V de l'alim séparée sur le 5V des leds. La broche data, la 8 sur le code que tu as mis, doit être sur DI. DO reste en l'air.

Comme tu as fait des branchements un peu au hasard, il n'est pas impossible que la LED de tête ait été endommagée. Si c'est le cas, elle ne transmet pas les données à la LED suivante. Si après branchement correct rien ne marche, coupe la led de tête et soude les fils sur la suivante.

PS: au cas où pourrais-tu mettre une photo gros plan des deux extrémités de ton ruban ?

Bonjour, merci pour ta réponse!
Pour mon ruban je n'ai pas 4 pin mais seulement 3 j'ai bien vu que il y avait un DI et DO mais ils semblent être sur le même pin :roll_eyes:
Niveau condensateur je n'avais pas de 470µF alors j'en ai mis 5 de 100µF, je ne sais pas si le résultat sera le même...
La photo...
http://hpics.li/0456906

Donc si je suis le code couleur, 2 fils pour le 5V, 2 pour GND e 1 pour le data. Non?
Pour le montage dans son intégralité, ça donne ça:
http://hpics.li/b1d8790

Ah, et ça marche toujours pas, bon branchements (il faut croire) faits. :0

J'ai essayé la librairie NeoPixels, pas plus de succès... :frowning:

DO connecté sur DI = impossible

Sur ta première photo j'ai l'impression que tu connectes l'Arduino à DO. Il faut le connecter à DI

jlbechennec:
60 WS2812 consomment 3,2A plein pots. Il faut donc une alimentation 5V séparée de celle de l'Arduino. Il faut une capa chimique aux bornes de cette alim séparée pour absorber les pics de tension à la mise en route et éviter d'endommager les leds. Je mets une 470µF.

bonjour
oui pour la capa
et il est meme aussi conseillé par certains de mettre une petite R serie entre la commande MCU et le DI (typ 470 ?)

Comme jlbechennec, j'ai l'impression que ton ruban est branché à l'envers...

Chaque LED possède une entrée (DI) et une sortie (DO). Comme elles sont toutes branchées en série, la broche DO de l'une est connectée à la broche DI de la suivante. Donc à un bout du ruban tu dois avoir une entrée (en plus de +5V et GND), et à l'autre bout une sortie, pour éventuellement mettre plusieurs rubans eux-mêmes en série.

Or à la vue de ta première photo il apparaît très clairement que ton câble est connecté à la broche DO, qui est la sortie du ruban... C'est toi qui l'as soudé là ou bien il a été livré comme ça ? Dans tout les cas ça ne peut pas fonctionner de cette façon, le ruban est fait pour être piloté « par l'autre côté » :slight_smile:

haifger:
Comme jlbechennec, j'ai l'impression que ton ruban est branché à l'envers...

...

J'ai loupé la remarque de jlbechennec ,
mais +1

La bande m'a été livrée comme ça, erreur de la part du constructeur puisque de l'autre côté ça marche effectivement (et c'est surpuissant o)! :smiley:
Merci beaucoup pour votre aide, je penserai à mettre une petite photo de tout ça quand ce sera fini! :slight_smile: