Fonctionnement de Leds Neopixel avec un Adafruit Feather

Bonjour,
Je me retrouve confronté à une situation que je ne comprends pas :frowning:
J'espère trouver un peu d'aide pour m'aider à me débloquer.

Mon projet :
Je me suis lancé dans un gros projet de création d'un BB8 (oui le droid de Star Wars :slight_smile: ) en taille réel. Et pour cela je suis des forums et autres groupes sur le sujet.

Mon problème :
Je suis actuellement en cours de réalisation de la partie électronique du Dome.
En soi, le diagramme est assez simple :
Dome MK3_bb.pdf (1.5 MB)

Et pour m'assurer que tout est OK, j'ai récupéré un code simple que j'ai adapté pour tester mes Leds :


#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif

// Which pin on the Arduino is connected to the NeoPixels?
// On a Trinket or Gemma we suggest changing this to 1
#define PIN3            3
#define PIN10           10
#define PIN11           11
#define PIN5           5
#define PIN6           6

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS3      1
#define NUMPIXELS10      1
#define NUMPIXELS11      1
#define NUMPIXELS5      3
#define NUMPIXELS6      6

// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
// Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest
// example for more information on possible values.
Adafruit_NeoPixel pixels3 = Adafruit_NeoPixel(NUMPIXELS3, PIN3, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels10= Adafruit_NeoPixel(NUMPIXELS10, PIN10, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels11= Adafruit_NeoPixel(NUMPIXELS11, PIN11, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels5= Adafruit_NeoPixel(NUMPIXELS5, PIN5, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels6= Adafruit_NeoPixel(NUMPIXELS6, PIN6, NEO_GRB + NEO_KHZ800);

int delayval = 500; // delay for half a second

void setup() {

  pixels3.begin(); // This initializes the NeoPixel library.
  pixels10.begin(); // This initializes the NeoPixel library.
  pixels11.begin(); // This initializes the NeoPixel library.
  pixels5.begin(); // This initializes the NeoPixel library.
  pixels6.begin(); // This initializes the NeoPixel library.
}

void loop() {

  // For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.

  for(int i=0;i<NUMPIXELS3;i++){
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels3.setPixelColor(i, pixels3.Color(0,150,0)); // Moderately bright green color.
    pixels3.show(); // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).
  }
  
  for(int i=0;i<NUMPIXELS10;i++){
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels10.setPixelColor(i, pixels10.Color(255,128,0)); 
    pixels10.show(); // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).
  }
  
  for(int i=0;i<NUMPIXELS11;i++){
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels11.setPixelColor(i, pixels11.Color(0,255,0)); 
    pixels11.show(); // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).
  }
  
  for(int i=0;i<NUMPIXELS5;i++){
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels5.setPixelColor(i, pixels5.Color(255,51,255)); 
    pixels5.show(); // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).
  }
  
  for(int i=0;i<NUMPIXELS6;i++){
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels6.setPixelColor(i, pixels6.Color(255,51,255)); 
    pixels6.show(); // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).
  }
}

Mais, seulement mes leds qui sont seule s'allument !? les leds en groupe de 3 et en groupe de 6 ne veulent pas s'allumer :frowning:
J'ai désoudé / resoudé plusieurs fois avec d'autres leds --> rien
J'ai testé avec 1 Seule LEd sur les même fils et ca fonctionne, donc le brnachement sur la carte Adafruit Feather est OK.

J'ai beau tourné le truc dans tous les sens, je ne comprends pas :frowning:
Si qqun peut me filer un coup de main pour me permettre de me débloquer ce serait top !
Merci d'avance de m'avoir lu.

++

Bonjour, je pense qu'il vous manque la commande à la fin de chaque boucle for :
pixels.clear (); correspondant aux pixels.begin() decracted ci-dessus
Essaye-le.
Salutations

b onsoir
les 3 leds seules sont toutes les 3 des neopixels ? elles s'allument avec des effets neopixels ?

AH... je n'avais pas vu qu'il y avait un RGB. Vous ne pouvez pas gérer le RVB comme un néopixel. donc la commande avec laquelle vous l'activez : pixels11.setPixelColor (i, pixels11.Color (0,255,0)); Vous devez simplement le changer en digital.Write (11, valeur); pas de boucle ou quoi que ce soit.
Salutations.

Retrait de la led RGB le reste fonctionne correctement dans un nano.

Bonjour,
Je n'ai pas compris ou je me suis mal exprimé.
Ce sont les PIN 5 et 6 qui ne fonctionnent pas ... sur le shema, ceux qui ont les leds x3 ou x2 !
Les autres fonctionnent bien.
Et c'est uniquement par bloc de plusieurs que ca ne marche pas. Si je test en mettant 1 seul led sur les pins 5 et 6? cela fonctionne.

toutes les leds sont des neopixels

ah non ... en revoyant la référence, les petites leds ne sont pas des neopixel :frowning:
enfin je crois ...
Voici la reference :

S'ils sont identiques aux néopixels, ne vous inquiétez pas.

Je vous ai parlé du RVB car dans le schéma que vous mettez pour l'oeil une led RVB est utilisée, si vous l'avez changé pour l'un des vôtres, le code est bon.
Je ne vois pas dans ce schéma les protections habituelles pour ces leds :

  • Connectez un condensateur électrolytique de 1000 uF entre VCC et GND au début de la bande.
  • Connectez une résistance série de 300 à 500 ohms entre la première led et la broche numérique. pour proger la première led.

Et vérifiez que dans les bandes vous n'avez pas inversé de led, dout -----> din.
J'ai testé ce code avec une bande de 8 et ils fonctionnent correctement sur un arduini nano.

Hello,
Les bandes In / Out sont OK. Les soudures ont été refaites plusieurs fois pour tester. Et j'ai même testé avec 1 led (ca fonctionne), puis ajouté une 2e etc ... mais dès qu'il y en a plusieurs, ca ne marche plus :frowning:
Pour ce qui est des protections, j'étais surpris aussi lorsque j'ai vu le diagramme mais j'utilise un Adafruit Feather, et je pense que les protections sont intégrées ( ?)
Non vraiment je ne comprends pas :frowning:

La "puissance" des WS812B est fournie par quoi ? quelle tension ?
Ne pas oublier qu'une WS2812B en full light c'est 3X20 mA de conso , et que les ws2812B sont trés "chatouilleuses" quant à leur tension d'alim

Bonjour,
C'est une batterie 3,7V 3000mAh :

les WS2812B ne sont vraiment à l'aise qu'avec 5.0V d'alim
ta tension actuelle de ta batterie est de combien ?
faire un test de levée de doute en alimentant les strip en 5.V
image

J'ai trouvé ! :slight_smile:
Il fallait que je coupe les liens entouré en jaune dans l'image suivante ... et ca fonctionne.
Je ne m'explique pas pourquoi par contre :confused:

Merci à tous pour votre aide !!

Bonjour fasstoch

Ces LED peuvent être câblées ainsi


En vert, les ponts d'alimentations sont inutiles puisque les 2 points à souder sont pontés sur le PCB, tirer un fil tout le long du ruban facilite le montage
En rouge, à ne pas ponter puisque In et out. On peut éventuellement ponter ces 2 points à souder, si la LED a claqué, ainsi ça "sauve" le ruban. Une LED, souvent la première peut claquer si l'on a été imprudent et on a oublié de mettre la résistance, entre 300 et 500 ohms.

Cordialement
jpbbricole

C’est noté !
Merci :slight_smile:

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.