Go Down

Topic: Problème avec ruban de led strip adressable (Read 2 times) previous topic - next topic

dukyduke

Bonjour,
J'essaie de faire fonctionner un ruban de LED adressable de 5 mètres : Digital RGB LED Strip de adafruit lerning system (LPD8806). C'est pour le téléthon (il reste une semaine !).
Impossible d'allumer ne serait-ce qu'une LED. J'ai essayé les 2 programmes fournis par le constructeur : longstrandtest.ino et strandtest.ino, sans succès.
J'utilise une carte arduino MEGA2560. J'ai une alimentation +5V/7A pour l'alimentation du bandeau, un bloc d'alim 12V pour la carte Arduino. La masse du 5V/7A est connectée à la masse de la carte (GND). J'utilise les sorties SPI (Data : pin 51, Clock : pin 52).
J'obtiens bien mes signaux en sortie (visualisés avec analyseur logique). J'ai constaté que sur le connecteur à l'autre bout du ruban, les signaux SCK et DATA n'arrivent pas, est-ce normal ? En revanche, pas de soucis pour l'alimentation. Pendant mes nombreux essais, quelques LED du bandeau se sont allumées au hasard. Maintenant, plus rien ne s'allume.
Il y a certainement quelque chose que je ne fais pas bien. Si quelqu'un a une idée, je suis preneur car là je ne vois plus !
J'envoie mon programme simplifié au maximum.
Merci d'avance,

B@tto

Jpense pas que ça soir normal que ça arrive pas à l'autre bout. Y'a une soudure qui doit pas être bonne. Vérifie les connexions à l'ohmmètre ou avec l'analyseur logique

dukyduke

Merci pour l'idée.
Fils de masse et de +5V : OK à l'ohmètre. Fils SCK et DATA : Aucun bip, et toujours à +5V.
J'ai essayé avec un autre ruban de 5 mètres : résultats identiques. J'espère ne pas les avoir "flingués".
Ceci dit, c'est peut-être normal pour l'ohmètre, chaque puce LPD8806 décale les signaux, donc les éventuels signaux n'arriveraient qu'après 160 * 3 décalages (si j'ai bien compris). J'ai essayé de mettre plus de 160 LED dans le programme, mais toujours rien en sortie.
S'il y a une coupure de pistes, cela va être difficile à localiser vu que le tout est enveloppé dans du plastique transparent. Un coup de cutter, d'accord mais où et quid de la garantie du produit.
Des idées ?
Merci pour vos réponses

dukyduke

Que pensez-vous du programme ? Quelqu'un a-t-il déjà fait fonctionner ce ruban de LED adressable ? Y a-t-il un programme simple pour allumer juste les premières LED du bandeau, sans effet ?
Merci d'avance pour vos réponses.
Ci-dessous, le programme que j'utilise, mais rien ne se passe !

Code: [Select]

#include "LPD8806.h"
#include "SPI.h"

// Simple test for 160 (5 meters) of LPD8806-based RGB LED strip

/*****************************************************************************/

// Number of RGB LEDs in strand:
int nLEDs = 160;

// Chose 2 pins for output; can be any valid output pins:
int dataPin  = 51;
int clockPin = 52;

// First parameter is the number of LEDs in the strand.  The LED strips
// are 32 LEDs per meter but you can extend or cut the strip.  Next two
// parameters are SPI data and clock pins:
//LPD8806 strip = LPD8806(nLEDs, dataPin, clockPin);

// You can optionally use hardware SPI for faster writes, just leave out
// the data and clock pin parameters.  But this does limit use to very
// specific pins on the Arduino.  For "classic" Arduinos (Uno, Duemilanove,
// etc.), data = pin 11, clock = pin 13.  For Arduino Mega, data = pin 51,
// clock = pin 52.  For 32u4 Breakout Board+ and Teensy, data = pin B2,
// clock = pin B1.  For Leonardo, this can ONLY be done on the ICSP pins.

// Creation d'un objet strip
LPD8806 strip = LPD8806(nLEDs);

void setup() {
  // Start up the LED strip
  strip.begin();

  // Update the strip, to start they are all 'off'
  strip.show();
}

void loop() {
   unsigned long couleurPWM;
   int pix;
   
   // fabrication bleu avec G, R et B : bleu -> 0x8080FF
   couleurPWM = strip.Color(  0,  0, 127); // Blue
 
   // Envoi en série de tous les codes couleurs pour chaque LED (3 octets / LED)
   for(pix = 0; pix < strip.numPixels(); pix++)
   {
     strip.setPixelColor(pix, couleurPWM);  // Set new pixel 'on'
     strip.show();                          // Refresh LED states
//     strip.setPixelColor(pix, 0);           // Erase pixel, but don't refresh!
     delay(100);
   }

   // Envoi des valeurs des registres PWM sur les sorties LED
   strip.setPixelColor(pix, 0); // MSB à 0 pour 3 octets
   strip.show(); // registre -> PWM (envoi sur sortie LED)
   
   // attends avant la prochaine séquence
   // je sais qu'au prochain tour ce sera encore tout bleu
   delay(1000);
}


Je vous aurai bien mis une image avec les signaux obtenus avec un analyseur logique, mais je ne sais pas comment utiliser les balises
Merci d'avance pour vos réponses.

B@tto

Si t'as repris celui du site je vois pas pourquoi ça marcherait pas :s

Après à tout hasard la librairie fonctionne sur n'importe quel pin apparemment, tu peux toujours essayer ça déjà !

Go Up