bonjour
j'ai ecrit un petit programme qui ,en autre doit lire des fichiers MP3 .
actuellement ,j'avais fait un test avec1 seul fichier MP3 , tout fonctionne bien,
ce matin , j'ai voulu lire un 2 et 3 fichier MP3, et la tout ce complique, puisque la lecture du bon fichier ne se fait pas .
sur ma carte SD , j'ai cree le repertoir MP3 et mis mes quatres fichiers . libelé 0001-bouton1.mp3;0002-radar.mp3; 0003-rire.mp3 et enfin 0004-tombe.mp3
puis j'utilise la commande
myDFPlayer.play(3); pour lire ici le fichier 3 donc 0003-radar.mp3
au resultat il me lit le fichier 0001- bouton1.mp3 ?
j'ai repris pas à pas et voila le resultat
si je commande myDFPlayer.play(1); j'ai le fichier 0004 en lecture
si je commande myDFPlayer.play(2); j'ai le fichier 0002 en lecture
si je commande myDFPlayer.play(3); j'ai le fichier 0001 en lecture
si je commande myDFPlayer.play(4); j'ai le fichier 0003 en lecture
le programme ci-dessous
// declacaration des bibliotheques
#include <Adafruit_NeoPixel.h> // Charge la librairie Neo Pixel d'Adafruit utilisé pour piloter le ruban de LED
#include "Arduino.h"//son
#include "SoftwareSerial.h"// son
#include "DFRobotDFPlayerMini.h"//son
//declaration variables
#define WS2812pin 3 // n° pin des led w2812
#define WS2812nbled 7 // n° de led sur le bandeau ws2818
// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
//systaxe strip.setPixelColor(ws2812numerodelaled, rouge, vert, bleu);
Adafruit_NeoPixel strip = Adafruit_NeoPixel(WS2812nbled, WS2812pin, NEO_GRB + NEO_KHZ800);
DFRobotDFPlayerMini myDFPlayer;//son
SoftwareSerial mySoftwareSerial(A4, A5); // RX, TX SON si sur autre port que A4(rx) et A5(tx) 1
int compteurson=0;// son variable pour eviter la repetion du son
int SW1=A0;
int etatsw1=0;
int SW2=A1;
int etatsw2=0;
int SW3=A2;
int etatsw3=0;
int SW4=A3;
int etatsw4=0;
void setup() //definition des pin
{
mySoftwareSerial.begin(9600);//SON si sur autre port que 0(rx) et (tx) 1
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3. si sur autre port que 0(rx) et (tx) 1
}
myDFPlayer.volume(28); //Set volume value. From 0 to 30 SON
myDFPlayer.play(1); //lit le 3 fichier mp3 SON mettre un son comme boitier X activer
pinMode(A0,INPUT);//SW1
pinMode(A1,INPUT);//SW2
pinMode(A2,INPUT);//SW3
pinMode(A3,INPUT);//SW4
pinMode(6,OUTPUT);//ES1
pinMode(3,OUTPUT);//le ws2812
strip.begin();//ws2812
strip.show(); // intialise toutes les led du ws2812
}
void loop() //programme principal tourne en boucle
{
etatsw1=digitalRead(SW1);// on regard letat du entrée 1
delay(50);
etatsw2=digitalRead(SW2);// on regarde letat du entree 2
delay(50);
etatsw3=digitalRead(SW3);// on regarde letat du entree 3
delay(50);
etatsw4=digitalRead(SW4);// on regarde letat du entre 4
delay(50);
// *********on allume ce que lon veut superviser enfonction del'etat************.
// on part sur la base de supervise toutes les entrees et sorties
//**********entrée ou sortie utilise= led allume en vert si condition ok en rouge si condition no***********
//***********entree ou sortie non utilisé =led eteinte**************************
// on part sur led1 = entree1, led2=entree2, led3=entrée3,.....
// reste à savoir comment on les dispose et on les connecte sur la boite ???
// sinon on supervise que les sortie surc la meme base !
// ******************on verifie et affiche l'etat des entreées qui sont necessaire *****************************
if (etatsw1==HIGH)
{strip.setPixelColor(1, 0, 255, 0);//ws2812 on allume la led n°1 en vert
strip.show();//ws2812 on affiche
}
else
{
strip.setPixelColor(1, 255, 0, 0);//ws2812 on allume la led n°1 en rouge
strip.show();//ws2812 on affiche
}
if (etatsw2==HIGH)
{strip.setPixelColor(2, 0, 255, 0);//ws2812 on allume la led n°2 en vert
strip.show();//ws2812 on affiche
}
else
{
strip.setPixelColor(2, 255, 0, 0);//ws2812 on allume la led n°2 en rouge
strip.show();//ws2812 on affiche
}
if (etatsw3==LOW)
{strip.setPixelColor(3, 0, 255, 0);//ws2812 on allume la led n°3 en vert
strip.show();//ws2812 on affiche
}
else
{
strip.setPixelColor(3, 255, 0, 0);//ws2812 on allume la led n°3 en rouge
strip.show();//ws2812 on affiche
}
if (etatsw4==HIGH)
{strip.setPixelColor(4, 0, 255, 0);//ws2812 on allume la led n°3 en vert
strip.show();//ws2812 on affiche
}
else
{
strip.setPixelColor(4, 255, 0, 0);//ws2812 on allume la led n°3 en rouge
strip.show();//ws2812 on affiche
}
//============= imbrication des entrées à testées====================================
if (etatsw1== HIGH && etatsw2== HIGH && etatsw3==LOW && etatsw4==HIGH )
// ici on supervise la sortie repondant à la condition du IF
{
//********on supervise l'etat de la sortie 1********************
//vert= toute les conditions sont ok
//rouge= une ou plusiers condition pas bonnes
// ws2812allume la led n° 5 en verte
//systaxe strip.setPixelColor(ws2812numerodelaled, rouge, vert, bleu);
strip.setPixelColor(5, 0, 255, 0);//ws2812 on allume la led n°1 en vert
strip.show();//ws2812 on affiche
// on joue un son 1 seul fois si les conditions sont reunies
// if (compteurson==0)// afin de ne pas repeter le son en bcle
// {
// myDFPlayer.play(1); //lit le 1 fichier mp3 SON mettre son comme coffre ouvert
// delay(50);
// compteurson=compteurson+1;// on rajoute +1
//}
digitalWrite(6,HIGH);// ES1 est Haute +5V
}
else
{
// ws2812allume la led n° 5 en rouge
//systaxe strip.setPixelColor(ws2812numerodelaled, rouge, vert, bleu);
strip.setPixelColor(5, 255, 0, 0);//ws2812 on allume la led n°1 en rouge
strip.show();//ws2812 on affiche
compteurson = 0 ;//son blce mise à zero de la variable compteur son
digitalWrite(6,LOW);//ES1 est BASSe à OV
}
}
j'avoue que je ne comprends pas .