Arduino + VS1053B MP3 + 25 LED Pixels WS2801 = problème de led

Bonjour,

Dans le cadre dans petit projet « maison » j’utilise un arduino couplé à un shield board permetant de lire des mp3 sur une carte MSD (sortie Jack). Cette carte vient se superposer à l’arduino.

Puis sur les pins sortant et non utilisés (3 et 4) de la carte VS1053B j’ai branché ma « guirlande » de led.

Après avoir « Téléversé » mon programme qui, grosso modo, lit une musique en faisant fonctionner les leds, c’est la qu’il y a un bug.
En effet, les leds, lorsque la musique est en cours, vont s’allumer de façon étrange (changer de couleur, clignoter etc.) Alors que le même montage, le même code avec juste la ligne lisant le Mp3 commentée, mes led se comportent bien !

Donc, je pense que le bug doit venir d’un problème électrique mais c’est là que je sèche car mon niveau en électronique n’est pas top… Et c’est là, ou j’ai besoins de vous

Salut,

J'aime bien les post avec aucune réponse parce que l'on découvre parfois des modules intéressants :slight_smile: Celui ci en est un. Mais bon il faut reconnaitre que tu ne donnes pas trop de détails alors il est difficile de t'aider. Une photo du montage, la copie de ton sketch (avec la balise code stp) les références des leds ... bref tout cela serait bien utile pour mieux comprendre ton projet.

Attention si ton programme "fesse" les leds ils est possible qu'elles se rebellent. ;D

Vu le peu d'info ceci est purement spéculatif!!

Les WS2801 demandent un timing précis.
Le VS1053 doit pas mal charger l'arduino pour lire sur la carte SD.
Pas dit que tu puisses faire cohabiter sereinement ces 2 équipements.

Bonjour,

Voici un lien vers les leds en question :

et un lien vers la carte mp3 :
http://www.geeetech.com/wiki/index.php/Arduino_MP3_shield_board_with_TF_card

De plus voici mon code :

#include <SPI.h>
//Add the SdFat Libraries
#include <SdFat.h>
#include <SdFatUtil.h>
//and the MP3 Shield Library
#include <SFEMP3Shield.h>
#include "Adafruit_WS2801.h"
#include "SPI.h" // Comment out this line if using Trinket or Gemma

SdFat sd;
SFEMP3Shield MP3player;

const byte dim_curve[] = {
 0,   1,   1,   2,   2,   2,   2,   2,   2,   3,   3,   3,   3,   3,   3,   3,
 3,   3,   3,   3,   3,   3,   3,   4,   4,   4,   4,   4,   4,   4,   4,   4,
 4,   4,   4,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   6,   6,   6,
 6,   6,   6,   6,   6,   7,   7,   7,   7,   7,   7,   7,   8,   8,   8,   8,
 8,   8,   9,   9,   9,   9,   9,   9,   10,  10,  10,  10,  10,  11,  11,  11,
 11,  11,  12,  12,  12,  12,  12,  13,  13,  13,  13,  14,  14,  14,  14,  15,
 15,  15,  16,  16,  16,  16,  17,  17,  17,  18,  18,  18,  19,  19,  19,  20,
 20,  20,  21,  21,  22,  22,  22,  23,  23,  24,  24,  25,  25,  25,  26,  26,
 27,  27,  28,  28,  29,  29,  30,  30,  31,  32,  32,  33,  33,  34,  35,  35,
 36,  36,  37,  38,  38,  39,  40,  40,  41,  42,  43,  43,  44,  45,  46,  47,
 48,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,
 63,  64,  65,  66,  68,  69,  70,  71,  73,  74,  75,  76,  78,  79,  81,  82,
 83,  85,  86,  88,  90,  91,  93,  94,  96,  98,  99,  101, 103, 105, 107, 109,
 110, 112, 114, 116, 118, 121, 123, 125, 127, 129, 132, 134, 136, 139, 141, 144,
 146, 149, 151, 154, 157, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 190,
 193, 196, 200, 203, 207, 211, 214, 218, 222, 226, 230, 234, 238, 242, 248, 255,
};

int NUM_LEDS = 25;
int RECV_PIN = 19;
int inputPin = 18;
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status
int choice = 1;
int NUM_FUNCTIONS = 2;
uint8_t dataPin  = 3;    // Yellow wire on Adafruit Pixels
uint8_t clockPin = 4;    // Green wire on Adafruit Pixels
float (*functionPtrs[10])(); //the array of function pointers
int16_t last_ms_char; // milliseconds of last recieved character from Serial port.
int8_t buffer_pos; // next position to recieve character from Serial port.
char buffer[6]; // 0-35K+null
uint32_t  millis_prv;
int hue;

Adafruit_WS2801 strip = Adafruit_WS2801(NUM_LEDS, dataPin, clockPin);

void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000L)
 clock_prescale_set(clock_div_1); // Enable 16 MHz on Trinket
#endif
 Serial.begin(9600);
 strip.begin(); // Neopixel setup
 strip.show(); // Initialize all pixels to 'off'

 //Initialize the SdCard.
 if (!sd.begin(SD_SEL, SPI_FULL_SPEED)) sd.initErrorHalt();

 //Initialize the MP3 Player Shield
 MP3player.begin();

}
void loop() {
 hue = random(70, 260);
 MP3player.playTrack(1);
 introduction();
}

// scenes
void turnAllPixelsOff() {
 for (int i = 0; i < NUM_LEDS; i++) {
   strip.setPixelColor(i, 0);
 }
 strip.show();
}

void introduction() {
 int rgb_colors[3];
 for (int i = 0; i <= 255; i++) {
   getRGB(80, 255, i, rgb_colors);
   for (int j = 0; j <= 24; j++) {
     strip.setPixelColor(j, Color(rgb_colors[0], rgb_colors[1], rgb_colors[2]));
   }
   strip.show();
   delay(10);
 }
 delay(10000);
}

En espérant trouver une solution ensemble :smiley:

Merci d’avance