DFplayer et HC-SR04 ,

Bonjour a tous , je me tourne vers les pros en dernier ressort , voila je suis sur un projet de détecteur qui émet une musique d’ambiance et qui change si l’on s’en approche malheureusement j’arrive a declancher la seconde musique quand je m’approche mais la première musique d’ambiance se lance toute les demi secondes , comme il est dans le loop il repart a chaque boucle , avez vous une solution pour qu’elle se lise normalement mais qu’elle change si le détecteur capte un obstacle a moins de un mètre et qu’elle reprenne normalement si le détecteur n’a plus rien a moins de un mètre . ? merci d’avance .

#include “Arduino.h”
#include “SoftwareSerial.h”
#include “DFRobotDFPlayerMini.h”

SoftwareSerial mySoftwareSerial(10, 11);

#define trigPin1 9
#define echoPin1 8

long duration, distance, distance1, firstSensor, secondSensor;

void setup()
{
mySoftwareSerial.begin(9600);
Serial.begin(115200);

pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);

Serial.println();
Serial.println(F(“DFRobot DFPlayer Mini Demo”));
Serial.println(F(“Initializing DFPlayer … (May take 3~5 seconds)”));

if (!myDFPlayer.begin(mySoftwareSerial))
{
Serial.println(F(“Unable to begin:”));
Serial.println(F(“1.Please recheck the connection!”));
Serial.println(F(“2.Please insert the SD card!”));
while(true);
}
Serial.println(F(“DFPlayer Mini online.”));
myDFPlayer.volume(30);
}
void loop()
{
myDFPlayer.play(2);

SonarSensor(trigPin1, echoPin1);

firstSensor = distance;

if (distance < 100)
{
myDFPlayer.play(1);
delay(6000);
}
}
void SonarSensor(int trigPin,int echoPin)
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
}

Que veux-tu dire par "elle reprenne normalement"? Je ne pense pas que tu puisses repartir de l'endroit où le morceau s'est arrêté.

Pour ton problème, tu peux écrire ta loop autour de la mesure de distance. Lorsque tu as la distance, si elle est inférieure à 100 tu lances le morceau 1 s'il n'est pas déjà lancé (donc il faut une variable d'état pour savoir s'il est déjà lancé ou non), si elle est supérieure à 100 tu lances le morceau 2 s'il n'est pas déjà lancé (même remarque).

La solution à ton problème tient dans cette variable qui stocke le numéro du morceau en train de jouer (ou 0 si rien n'est joué)