Hello. I'm pretty new to the whole Arduino thing, I was trying to set up a MP3 player in a little voice controlled relay circuit I had already finished. Problem is that I keep getting a "undefined reference to `SoftwareSerial::SoftwareSerial(unsigned char, unsigned char, bool)' " Error among others. I also was so far unable to find a solution that I was able to understand/that worked.
I'll attach the whole Error and the code I used below starting with the Error.
Arduino: 1.8.16 (Windows 10), Board: "Arduino Nano, ATmega328P (Old Bootloader)"
C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\patri\Documents\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328old -vid-pid=1A86_7523 -ide-version=10816 -build-path C:\Users\patri\AppData\Local\Temp\arduino_build_419823 -warnings=default -build-cache C:\Users\patri\AppData\Local\Temp\arduino_cache_182406 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\patri\Documents\Arduino\project2\project2.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\patri\Documents\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328old -vid-pid=1A86_7523 -ide-version=10816 -build-path C:\Users\patri\AppData\Local\Temp\arduino_build_419823 -warnings=default -build-cache C:\Users\patri\AppData\Local\Temp\arduino_cache_182406 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\patri\Documents\Arduino\project2\project2.ino
Using board 'nano' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10816 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "C:\\Users\\patri\\AppData\\Local\\Temp\\arduino_build_419823\\sketch\\project2.ino.cpp" -o nul
Using cached library dependencies for file: C:\Users\patri\AppData\Local\Temp\arduino_build_419823\sketch\DFRobotDFPlayerMini.cpp
Generating function prototypes...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10816 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "C:\\Users\\patri\\AppData\\Local\\Temp\\arduino_build_419823\\sketch\\project2.ino.cpp" -o "C:\\Users\\patri\\AppData\\Local\\Temp\\arduino_build_419823\\preproc\\ctags_target_for_gcc_minus_e.cpp"
"C:\\Program Files (x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\patri\\AppData\\Local\\Temp\\arduino_build_419823\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10816 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "C:\\Users\\patri\\AppData\\Local\\Temp\\arduino_build_419823\\sketch\\project2.ino.cpp" -o "C:\\Users\\patri\\AppData\\Local\\Temp\\arduino_build_419823\\sketch\\project2.ino.cpp.o"
Using previously compiled file: C:\Users\patri\AppData\Local\Temp\arduino_build_419823\sketch\DFRobotDFPlayerMini.cpp.o
Compiling libraries...
Compiling core...
Using precompiled core: C:\Users\patri\AppData\Local\Temp\arduino_cache_182406\core\core_arduino_avr_nano_cpu_atmega328old_0c812875ac70eb4a9b385d8fb077f54c.a
Linking everything together...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-gcc" -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\\Users\\patri\\AppData\\Local\\Temp\\arduino_build_419823/project2.ino.elf" "C:\\Users\\patri\\AppData\\Local\\Temp\\arduino_build_419823\\sketch\\DFRobotDFPlayerMini.cpp.o" "C:\\Users\\patri\\AppData\\Local\\Temp\\arduino_build_419823\\sketch\\project2.ino.cpp.o" "C:\\Users\\patri\\AppData\\Local\\Temp\\arduino_build_419823/..\\arduino_cache_182406\\core\\core_arduino_avr_nano_cpu_atmega328old_0c812875ac70eb4a9b385d8fb077f54c.a" "-LC:\\Users\\patri\\AppData\\Local\\Temp\\arduino_build_419823" -lm
C:\Users\patri\AppData\Local\Temp\ccKiDLic.ltrans0.ltrans.o: In function `global constructors keyed to 65535_0_DFRobotDFPlayerMini.cpp.o.2114':
<artificial>:(.text.startup+0x8e): undefined reference to `SoftwareSerial::SoftwareSerial(unsigned char, unsigned char, bool)'
C:\Users\patri\AppData\Local\Temp\ccKiDLic.ltrans0.ltrans.o: In function `setup':
C:\Users\patri\Documents\Arduino\project2/project2.ino:33: undefined reference to `SoftwareSerial::begin(long)'
C:\Users\patri\AppData\Local\Temp\ccKiDLic.ltrans0.ltrans.o: In function `__static_initialization_and_destruction_0':
C:\Users\patri\Documents\Arduino\project2/project2.ino:4: undefined reference to `SoftwareSerial::~SoftwareSerial()'
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino Nano.
And here's the Code used. Bear in mind that I still contains the parts used for the voice control.
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
//----------------------------------------
SoftwareSerial softwareSerial(11, 12);
DFRobotDFPlayerMini player;
void printDeatil(uint8_t type, int value);
String voice;
int
led1 = 2, //Connect LED 1 To Pin #2
led2 = 3, //Connect LED 2 To Pin #3
led3 = 4, //Connect LED 3 To Pin #4
led4 = 5, //Connect LED 4 To Pin #5
led5 = 6; //Connect LED 5 To Pin #6
//--------------------------Call A Function-------------------------------//
void allon(){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
}
void alloff(){
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
//-----------------------------------------------------------------------//
void setup() {
softwareSerial.begin(9600);
player.begin(softwareSerial);
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(9, INPUT); //Pause Button
pinMode(8, INPUT); //Skip Button
}
//-----------------------------------------------------------------------//
void loop() {
if(digitalRead(9) == HIGH)
{
while(1)
{
player.pause();
if(digitalRead(9) == HIGH)
{player.start();
break;}
}
}
if(digitalRead(8) == HIGH)
{
delay(100);
player.next();
}
while (Serial.available()){ //Check if there is an available byte to read
delay(10); //Delay added to make thing stable
char c = Serial.read(); //Conduct a serial read
if (c == '#') {break;} //Exit the loop when the # is detected after the word
voice += c; //Shorthand for voice = voice + c
}
if (voice.length() > 0) {
Serial.println(voice);
//-----------------------------------------------------------------------//
//----------Control Multiple Pins/ LEDs----------//
if(voice == "*all on") {allon();} //Turn Off All Pins (Call Function)
else if(voice == "*all off"){alloff();} //Turn On All Pins (Call Function)
//----------Turn On One-By-One----------//
else if(voice == "*TV on") {digitalWrite(led1, HIGH);}
else if(voice == "*fan on") {digitalWrite(led2, HIGH);}
else if(voice == "*computer on") {digitalWrite(led3, HIGH);}
else if(voice == "*bedroom lights on") {digitalWrite(led4, HIGH);}
else if(voice == "*bathroom lights on") {digitalWrite(led5, HIGH);}
//----------Turn Off One-By-One----------//
else if(voice == "*TV off") {digitalWrite(led1, LOW);}
else if(voice == "*fan off") {digitalWrite(led2, LOW);}
else if(voice == "*computer off") {digitalWrite(led3, LOW);}
else if(voice == "*bedroom lights off") {digitalWrite(led4, LOW);}
else if(voice == "*bathroom lights off") {digitalWrite(led5, LOW);}
//-----------------------------------------------------------------------//
voice="";}} //Reset the variable after initiating
In the folder for the Scetch I have the "Arduino.h", the "DFRobotDFPlayerMini.h" and "DFRobotDFPlayerMini.cpp" as well as the "SoftwareSerial.h" files.
I'd really appreciate it if anyone can help me, because I am very lost