This is my best shot so far.
The serial monitor says DFPlayer mini online, but the only thing that happends is that the LED13 keeps light up when something is in the distance.
const byte led1 = 13; // LED pin NORMAL PIN2 BUT 13 FOR TEST
const byte trigger= 6; // PIR sensor pin SENSOR REPLACED BY TRIGGER
bool isActivated = false;
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#include <PCM.h> //ADDED FROM DISTANCE CODE
#define MIN_DISTANCE 30 //ADDED FROM DISTANCE CODE
int echo = 5; // Pin to echo //ADDED FROM DISTANCE CODE
int trigger = 6; // Pin for trigger //ADDED FROM DISTANCE CODE
int led1 = 13; // led onboard for test //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 (5000); //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(30);
}
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) {
digitalWrite (led1, HIGH);
delay (35);
digitalWrite (led1, LOW);
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
}
}
if ( isActivated == false ) {
// check PIR
int pirSensor = digitalRead(sensor);
if (pirSensor == HIGH) {
isActivated = true;
startTime = millis();
Serial.println("Sensor Activated");
Serial.println("DFPlayer Working...");
myDFPlayer.play(1);
}
}
}
}