You need to record your startTime when the distance sensors first detects something which is when it is less than MIN_DISTANCE and not current active.
const byte led1 = 13; // LED pin NORMAL PIN2 BUT 13 FOR TEST
const byte trigger = 6; // PIR sensor pin SENSOR REPLACED BY TRIGGER
const byte echo = 5; // Pin to echo //ADDED FROM DISTANCE CODE
bool isActivated = false;
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#include <PCM.h> //ADDED FROM DISTANCE CODE
#define MIN_DISTANCE 30 //ADDED FROM DISTANCE CODE
unsigned long responsetime; //ADDED FROM DISTANCE CODE
unsigned long distance; //ADDED FROM DISTANCE CODE
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
const unsigned long pauseTime = 6000; // how long between PIR detections
const unsigned long blinkTime = 100; // how fast to blink led
unsigned long startTime; // time PIR triggered
unsigned long lastTime; // last time we toggled led
void setup() {
delay (3000); //DELAY TIME FOR DEVICE TO START UP TO AVOID ERRORS
pinMode(led1, OUTPUT); // set led pin as output
pinMode(trigger, INPUT); // set sensor pin as input SENSOR REPLACED BY TRIGGER
pinMode (trigger, OUTPUT); //ADDED FROM DISTANCE CODE
pinMode (echo, INPUT); //ADDED FROM DISTANCE CODE
pinMode (led1, OUTPUT); //ADDED FROM DISTANCE CODE
mySoftwareSerial.begin(9600);
Serial.begin(115200);
Serial.println(F("\nInitializing DFPlayer..."));
//Use softwareSerial to communicate with MP3
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."));
//Set volume value (From 0 to 30)
myDFPlayer.volume(3);
}
void loop() {
digitalWrite (trigger, HIGH); // We send a 10 microsecond pulse //ADDED FROM DISTANCE CODE
delayMicroseconds (10); //ADDED FROM DISTANCE CODE
digitalWrite (trigger, LOW); //ADDED FROM DISTANCE CODE
responsetime = pulseIn (echo, HIGH); // And we wait for a pulse back //ADDED FROM DISTANCE CODE
distance = responsetime / 58; // Distance calculation in cm //ADDED FROM DISTANCE CODE
if (distance < MIN_DISTANCE && isActivated == false) {
// first detection of something
isActivated = true;
startTime = millis();
Serial.println("Sensor Activated");
Serial.println("DFPlayer Working...");
myDFPlayer.play(1);
digitalWrite (led1, HIGH);
}
if ( isActivated ) {
// blink led
if ( millis() - lastTime >= blinkTime ) {
lastTime = millis();
digitalWrite(led1, !digitalRead(led1));
}
// check if we have been active long enough
if ( millis() - startTime >= pauseTime ) {
isActivated = false; // force PIR to trigger again or not
}
}
}