Go Down

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

Jimbow

Yop boby!

j'ai vu que tu m'avais envoyer en mp un msg. Perso moi j'ai branché , j'ai chargé et ca marchais le programme de teste. Je vois pas trop ce qu'il pourrait y avoir.
Pour moi le programme est bon.

sinon perso moi j'ai utilisé un arduino teensy 2+


Le mieux prend une photo du montage que t'as fait ou envoie la moi en mp ou envoie ton num. pasque un truc comme ca ca devrais fonctionner du premier coup!



dukyduke

[Résolu]
Ca y est ! Le ruban fonctionne super bien.
Je suis le roi des c... Le ruban de LED de 5m est équipé de 2 connecteurs 4 broches, un de chaque côté (un mâle et un femelle). Par commodité, j'ai fait tous mes essais avec le connecteur femelle par commodité, n'ayant pas de connecteur adapté pour le côté mâle. Je pensais que l'on pouvait injecter les signaux indifféremment des 2 côtés, comme un bus I2C, RS485... Et bien non, IL FAUT connecter la carte arduino au connecteur mâle pour que cela fonctionne.
Merci B@tto de m'avoir ouvert l'esprit, ta dernière remarque m'a mis sur la voie...
Bon, je poste le code que j'ai utilisé pour tester le ruban de LED adressables (pris sur le site du constructeur).
Code: [Select]

/***************************************************************************************
Chenillard pour tester le ruban de 5 mètres de LED strip adressables (160 LED)
Commande du ruban de LED basé sur le LPD8806
Allumage successif de chacune des 160 LED (point RGB) dans l'ordre croissant
1er passage en rouge, 2ème en vert, 3ème en bleu, 4ème en blanc
****************************************************************************************/
#include "LPD8806.h" // utilisation des méthodes de la classe LPD8806
#include "SPI.h" // utilisation des méthodes de la classe SPI

const int DUREE_ON = 25;  // durée allumage de chaque LED
int nLEDs = 160;   // nombre de LED RGB dans le ruban
int dataPin  = 51; // signal DATA du bus SPI
int clockPin = 52;   // signal CLOCK du bus SPI

// Avec une carte Uno classique, il faut utiliser les broches 11 (data) et
// 13 (clock).
LPD8806 strip = LPD8806(nLEDs);  // création d'un objet strip de type LPD8806

void setup() {
 // Initialise la connexion SPI : MSB first, mode 0, clock 2 MHz, RAZ registres LED
 strip.begin();

 // envoi (n registres LED -> n PWM LED), PWM = 0 -> n LED éteintes
 strip.show();
}

void loop() {
 colorChase(strip.Color(127,  0,  0), DUREE_ON);  // chenillard, rouge défile
 colorChase(strip.Color(  0,127,  0), DUREE_ON);  // chenillard, vert défile
 colorChase(strip.Color(  0,  0,127), DUREE_ON);  // chenillard, bleu défile
 colorChase(strip.Color(127,127,127), DUREE_ON);  // chenillard, blanc défile
}

// Une lumière (point) descend le long du ruban
// c : couleur de la lumière,  wait : durée d'allumage
void colorChase(uint32_t c, uint8_t wait) {
 int i;
 
 // un seul point est affiché à la fois
 for(i=0; i<strip.numPixels(); i++) {
   strip.setPixelColor(i, c); // charge couleur allumage du point dans registre
   strip.show();              // allume le point, registre LED -> PWM LED
   strip.setPixelColor(i, 0); // RAZ registre LED, mais PWM tjs active
   delay(wait);               // temporisation
 }

 strip.show(); // Eteint le dernier point
}

Jimbow

Oé faut faire attention au sens! normalement si tu regarde sur ta stripled il y a marqué DI et CI (Data IN , Clock IN) et de l'autre coté en sortie DO et CO (Data OUT, Clock OUT). en faite c'est pas un bus comme tu parlais de l'I2C, RSXXX . Chaque trame est régénéré a chaque passage dans les micro-contrôleur intermédiaire. L'intérêt de ce système c'est de ne pas avoir à adresser chaque led, l'adressage ce fait en fonction de l'ordre de câblage.

dukyduke

Et oui ! Quand on est pressé, on ne fait rien de bon. Je n'avais pas fait le rapprochement DO DOutput. Voilà, je ferai plus attention la prochaine fois.
Question projet téléthon, cela fonctionne très bien avec des couleurs simples (rouge, vert, bleu, jaune, blanc). Quand je veux allumer des LED en violet (R=64, G=0, B=127), indigo (R=32, G=0, B=127) ou encore orange (R=127, G=64, B=0), le ruban devient instable (les couleurs se mélangent et font un peu n'importe quoi). Bizarre ! Certains mélanges fonctionnent très bien : jaune (127, 127, 0), par contre violet foncé fonctionne mal (127, 0, 127). Je ne vois pas pourquoi !
De toute façon, je n'ai plus le temps de chercher. Peut-être un prochain post... Pour le téléthon, je me contenterai des couleurs qui ne me posent pas de problème : rouge, vert, bleu, jaune et blanc.

Go Up