Slt a tous me revoilà avec un nouveau projet qui comme d'habitude fonctionne très bien mais pas comme je le voudrais.
donc pour faire court dans quelque jours les gosses vont débarquer pour avoir des bonbon.
trop cool " ma famille et moi même sommes fan d'halloween "
cette année je voulais les effrayer un peu,
je donc trouvé le projet suivant :
avec un arduino uno , un dfplayer, un détecteur PIR, un HP 3W , et un led strip RGB plus quelques scary song
je veux détecter leurs arrivé, lire un MP3 et commander les led strip en fonction de cela. jusque la pas de souci et voici donc le programme qui fonctionne.
/*
Projet d'annimation lumineuse halloween syncronisée en fonction
du son emis par un HP de 3W sur un DFplayer
*/
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
const int buttonPin = 9; // broche n9 sur PIR
int buttonState = 0; // variable pour stocker le status du PIR
int busyPin = 5; // broche n9 sur busy pin du MP3; // lecteur MP3 actif ou non
int busy = 0;
int LEDrouge = 6; // broche n6 sur led strip rouge
int LEDverte = 7; // broche n7 sur led strip vert
int LEDbleu = 8; // broche n6 sur led strip bleu
int sensorPin = A0; // echantillonage de la sortie HP
int sensorValue = 0; // variable pour stocker la valeur de l'echantillonage
int button = 0;
//***************************************SETUP*************************************
void setup () {
pinMode(buttonPin, INPUT);
pinMode(LEDrouge, OUTPUT);
pinMode(LEDverte, OUTPUT);
pinMode(LEDbleu, OUTPUT);
pinMode(busyPin, INPUT);
pinMode(buttonPin, INPUT);
mySoftwareSerial.begin(9600);
myDFPlayer.begin(mySoftwareSerial); //utilisation de softwareSerial pour communiquer avec le mp3.
myDFPlayer.volume(15); //reglage volume. de 0 a 30
static unsigned long temps = millis();
//----Set different EQ----
// myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
// myDFPlayer.EQ(DFPLAYER_EQ_POP);
// myDFPlayer.EQ(DFPLAYER_EQ_ROCK);
// myDFPlayer.EQ(DFPLAYER_EQ_JAZZ);
// myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC);
myDFPlayer.EQ(DFPLAYER_EQ_BASS);
}
//.................................BOUCLE PRINCIPALE.........................................
void loop () {
digitalWrite(LEDbleu, HIGH);
digitalWrite(LEDverte, HIGH);
digitalWrite(LEDrouge, HIGH);
do {
button = digitalRead(buttonPin); // ataché au detecteur PIR
} while (button == 1);
//myDFPlayer.play (5); //Play haunted mp3
myDFPlayer.next(); // lis le prochain morceau.
delay(100);
do {
sensorValue = analogRead(sensorPin);
if (sensorValue >= 550) {
digitalWrite(LEDrouge, LOW);
digitalWrite(LEDbleu, LOW);
digitalWrite(LEDverte, LOW);
delay (50);
}
if (sensorValue <= 500) {
digitalWrite(LEDrouge, LOW);
digitalWrite(LEDbleu, HIGH);
digitalWrite(LEDverte, HIGH);
}
busy = digitalRead(busyPin);
} while (busy == 0); // a zero quand le son est actif
}
//...................................... FIN DE LA BOUCLE ......................
Mon souci est que j'au un dizaine de titres , mais sont trop long : environ 6 minutes chaqun, je voulais donc
en lire qu'une parti environ 60 secondes , mais voila
mon prog se sert de la fonction Busy du DFplayer et donc je n'arrive pas a sortir de la boucle tant que le HP débité du son,
j'ai essayer une boucle millis mais je n'arrive pas a trouver le bon endroit pour la couler
si someone a une idée
merci a tous.
seb