DFplayer affecting rest of code

So this code has a servo rotate until the ultrasound sensor sees something. when trying to play sound with the dfplayer once something is seen, it will occasionally play or not play the sound, I hear the Windows disconnect sound, the servo sometimes acts without being instructed, the serial monitor will stop printing out the values read by the sensor. when moving the object away from the sensor, the code returns back to the void loop() function and will perform the rotations perfectly, until the same issue happens when placing something in front of the sensor. Does anyone have any advice onto why the DFplayer is causing the issue? Code is below.

#include <Servo.h>
#include "SR04.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#define TRIG_PIN 12
#define ECHO_PIN 8

void idle();
void focus();

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini Player;
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
Servo myservo;  // create servo object to control a servo

int pos = 0;    // variable to store the servo position
int i = 1;
long a;
long b;
long spec;
long sound;


void setup() {

  randomSeed(analogRead(0));

  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  if (!Player.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    while(true);
  }
  Player.volume(20);  //Set volume value. From 0 to 30
  
  myservo.attach(9);
  //myservo.write(20);
  //delay(1000);
  //myservo.write(135);
  //Serial.begin(9600);
  //delay(2000);

  if(sr04.Distance() <= 2){
    Player.play(22);
    myservo.write(0);
    delay(2000);
    idle();
  }else{
    myservo.write(0);
    delay(2000);
  }
}

void loop() {
  
  a = sr04.Distance();
  Serial.print(a);
  Serial.println("cm");
  if(a <= 65){
    delay(400);
    focus();
  }
  if(i == 1){
    pos += 3;
    myservo.write(pos);
    if(pos == 135){
      i = 0;
      delay(3000);
    }
  }else{
    pos -= 3;
    myservo.write(pos);
    if(pos == 0){
      i = 1;
      delay(3000);
    }
   }
  delay(40);
}

void idle(){

  while(true){
    if(i == 1){
      pos += 3;
      myservo.write(pos);
      if(pos == 135){
        i = 0;
        delay(3000);
      }
    }else{
      pos -= 3;
      myservo.write(pos);
      if(pos == 0){
        i = 1;
        delay(3000);
      }
    }
    delay(40);
  }  
}

void focus(){
  
  spec = random(1,501);
  if (spec == 115){
    Serial.println("ok");
    //Player.play(22);
  }else{
    sound = random(1,22);
    Serial.println("ok");
    //Player.play(sound);
    delay(4000);
    
  }
      
  //delay(4000); // beeps and boops, LEDs and whatnot
  b = sr04.Distance();
  Serial.print(b);
  Serial.println("cm");

  if(b <= 65){
    focus();
  }

Try here

@

Your other topic on the same subject deleted.

Please do not duplicate your questions as doing so wastes the time and effort of the volunteers trying to help you as they are then answering the same thing in different places.

Repeated duplicate posting could result in a temporary or permanent ban from the forum.

Could you take a few moments to Learn How To Use The Forum

It will help you get the best out of the forum in the future.

  • Your OS and version can be valuable information, please include it along with extra security you are using.

  • Always list the version of the IDE you are using and the board version if applicable.

  • Use quote or add error messages as an attachment NOT a picture.

  • How to insert an image into your post. ( Thanks @sterretje )

  • Add your sketch where applicable but please use CODE TAGS ( </> )

  • Add a SCHEMATIC were needed even if it is hand drawn

  • Add working links to any specific hardware as needed (NOT links to similar items)

  • Remember that the people trying to help cannot see your problem so give as much information as you can

COMMON ISSUES

  • Ensure you have FULLY inserted the USB cables.

  • Check you have a COMMON GROUND where required. ( Thanks @Perry)

  • Where possible use USB 2.0 ports or a USB 2.0 POWERED HUB to rule out USB 3.0 issues.

  • Try other computers where possible.

  • Try other USB leads where possible.

  • You may not have the correct driver installed. CH340/341 or CP2102 or FT232 VCP Drivers - FTDI

  • There may be a problem with the board check or remove your wiring first.

  • Remove any items connected to pins 0 and 1.

COMPUTER RELATED

  • Close any other serial programs before opening the IDE.

  • Ensure you turn off any additional security / antivirus just to test.

  • There may be a problem with the PC try RESTARTING it.

  • You may be selecting the wrong COM port.

  • Avoid cloud/network based installations where possible OR ensure your Network/Cloud software is RUNNING.

  • Clear your browsers CACHE.

  • Close the IDE before using any other serial programs.

  • Preferably install IDE’s as ADMINISTRATOR or your OS equivalent

ARDUINO SPECIFIC BOARDS

  • CH340/341 based clones do not report useful information to the “get board info” button.

  • NANO (Old Types) some require you to use the OLD BOOTLOADER option.

  • NANO (ALL Types) See the specific sections lower in the forum.

  • NANO (NEW Types) Install your board CORE’s.

  • Unless using EXTERNAL PROGRAMMERS please leave the IDE selection at default “AVRISP mkII”.

  • Boards using a MICRO usb connector need a cable that is both DATA and CHARGE. Many are CHARGE ONLY.

CREATE editor install locations.

  • On macOs ~/Applications/ArduinoCreateAgent-1.1/ArduinoCreateAgent.app/Contents/MacOS/config.ini

  • On Linux ~/ArduinoCreateAgent-1.1/config.ini

  • On Windows C:\Users[your user]\AppData\Roaming\ArduinoCreateAgent-1.1

Performing the above actions may help resolve your problem without further help.

Language problem ?

Try a language closer to your native language:

Thanks to all those who helped and added to this list.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.