Hallo
ich arbeite schon seit längerem an einem funktionierenden Laser tag System und habe jetzt Probleme mit dem Code für die Tonausgabe via DFPlayer.
sobald ich nämlich den Code für den DFPlayer in den Code für das Laser tag System einfüge und hochlade reagiert der Arduino nicht mehr.
Kann mir jemand dabei helfen?
Code vom Laser tag System inkl. DFPlayer Code:
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10,11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
#include <IRremote.h> //ir libary
IRsend irsend; //ir senden
int RECV_PIN = 2; //ir empfänger pin
IRrecv irrecv(RECV_PIN) ;
decode_results results;
const int LEDm = 10; //mündungsfeuer
unsigned int Trigger = 4; // Schalter "Trigger" ist mit Pin 4 verbunden
unsigned int nachladen = 5; //nachladeknopf
unsigned int buttonState1 = 0;
unsigned int wiederbeleben = 6; //wiederbeleben
unsigned int buttonState2 = 0;
unsigned int ueberbruecken = 7; //überbrücken
unsigned int buttonState3 = 0;
unsigned int valTr; // Variable für den Pin Zustand
unsigned int buttonState; // Variable für den letzten Schalterzustand
unsigned int AMMO = 10; // Wie viel ammo habe ich maximal
unsigned int LIVE = 10; // Wie viel leben habe ich maximal
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_WIDTH 128 // OLED display Breite, in pixels
#define SCREEN_HEIGHT 64 // OLED display Höhe, in pixels
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
void setup()
{
Serial.begin(115200);
//OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
mySoftwareSerial.begin(9600);
Serial.println();
Serial.println(F("DFPlayer Mini "));
Serial.println(F("Initializing DFPlayer ..."));
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
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.setTimeOut(500); //Set serial communictaion time out 500ms
myDFPlayer.volume(30); //Set volume value (0~30).
myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
//OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
irrecv.enableIRIn();
pinMode(LEDm, OUTPUT); //mündungsfeuer auf output
digitalWrite(LEDm, LOW); //mündungsfeuer low
pinMode(nachladen, INPUT_PULLUP); //nachladeknopf
pinMode(wiederbeleben, INPUT_PULLUP); //wiederbeleben
pinMode(ueberbruecken, INPUT_PULLUP); //überbrücken
buttonState2 = digitalRead(wiederbeleben);
buttonState3 = digitalRead(ueberbruecken);
pinMode(Trigger, INPUT_PULLUP); // Trigger-Pin ist Input
buttonState = digitalRead(Trigger); // Anfangszustand lesen
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // I2C address = 0x3C
delay(10);
display.clearDisplay();
display.setTextSize(2); //textgröße 2
display.setTextColor(WHITE); //textfarbe weiß
}
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
void loop()
{
display.clearDisplay(); //display reset
if (irrecv.decode(&results))
{
if (results.value == 1)
{
digitalWrite (LEDm, HIGH);
delay (100);
digitalWrite (LEDm, LOW);
irrecv.resume();
}
}
//_____________________________________________________________________________________________________________________________
if (LIVE > 0)
{ //ist live größer als 0
display.setCursor(60, 25); //cursor setzen
display.print(LIVE); //was soll angezeigt werden (zahl)
display.display();
display.setCursor(0, 25); //cursor setzen
display.print("LIVE:"); //was soll angezeigt werden (name)
display.display();
}
//__________________________________________________________________________________________________________________________
if (AMMO > 0)
{ //ist ammo größer als 0
if (LIVE > 0)
{
display.setCursor(60, 0); //cursor setzen
display.print(AMMO); //was soll angezeigt werden (zahl)
display.display();
display.setCursor(0, 0); //cursor setzen
display.print("AMMO:"); //was soll angezeigt werden (name)
display.display();
}
}
//___________________________________________________________________________________________________________________________
if (AMMO == 0){ //ist ammo 0
if (LIVE > 0){
display.setCursor(0, 0); //cursor setzen
display.print("AMMO: out"); //was soll angezeigt werden (name)
display.display();
}
}
//____________________________________________________________________________________________________________________________
if (LIVE == 0){ //ist live 0
AMMO =0; //ammo wird auf 0 gesetzt
display.setCursor(0, 40); //cursor setzen
display.print("game over"); //was soll angezeigt werden (name)
display.display();
}
//____________________________________________________________________________________________________________________________
if (digitalRead(ueberbruecken) == HIGH) { //ist ueberbruecken high
LIVE --; //live -1
// display.clearDisplay(); //display reset
}
//_____________________________________________________________________________________________________________________________
if (digitalRead(wiederbeleben) == HIGH) { //ist wiederbeleben high
//delay(1000); //wiederbelebungsdauer 1 sekunde
LIVE =10; //LIVE wird auf 10 gesetzt
// display.clearDisplay(); //display reset
}
//_____________________________________________________________________________________________________________________________
if (digitalRead(nachladen) == HIGH) { //ist nachladen high
if ((LIVE > 0) && (AMMO < 10)){
//display.clearDisplay();
display.setTextSize(1); //textgröße 1
display.setCursor(60, 16); //cursor setzen
display.print("Reload..."); //was soll angezeigt werden (name)
display.display();
delay(1000); //nachladedauer 1 sekunde
display.setTextSize(2); //textgröße 2
// display.clearDisplay();
AMMO =10; //ammo wird auf 10 gesetzt
// display.clearDisplay();
}
}
//__________________________________________________---------------------------------------________________________________________________________________________
valTr = digitalRead(Trigger); // Eingabewert lesen und in val speichern
if (valTr != buttonState){ // Der Zustand des Schalters hat sich verändert
if (valTr == LOW){ // Ist der Schalter gedrückt?
if (AMMO > 0){//&& (AMMO < 10)){ //ist ammo größer als 0 und ist ammo kleiner als 10
//if ((LIVE > 0)&& (LIVE < 10)){
for (int i = 0; i < 1; i++) {
irsend.sendRC5(01, 12); //irsend ...
delay(40); }
AMMO --; // - ammo
//display.clearDisplay(); //display reset
//if ((AMMO > 0)&& (AMMO < 10)){ //ist ammo größer als 0 und ist ammo kleiner als 10
//if ((LIVE > 0)&& (LIVE < 10)){
digitalWrite(LEDm, HIGH); //mündungsfeuer an
delay(50); //warte
digitalWrite(LEDm, LOW); //mündungsfeuer aus
Serial.print("es wurden ");
Serial.print(AMMO); //serial wie viel ammo wurde verscossen (zahl)
Serial.println(" verschossen ");
if (AMMO == 0){ //ist ammo 0
Serial.print("ammo out "); //serial ammo out
//}
}
}
}
}
buttonState = valTr; // Den Zustand merken
if (AMMO > 10){ //ist ammo größer als 10
AMMO =0;} //setze ammo auf null (debuging)
if (LIVE > 10){ //ist live größer als 10
LIVE =0;} //setze live auf null (debuging)
}
DFPlayer Code:
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10,11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
void setup()
{
mySoftwareSerial.begin(9600);
Serial.begin(115200);
Serial.println();
Serial.println(F("DFPlayer Mini "));
Serial.println(F("Initializing DFPlayer ..."));
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
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.setTimeOut(500); //Set serial communictaion time out 500ms
myDFPlayer.volume(10); //Set volume value (0~30).
myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
}
void loop () {
myDFPlayer.play(3);//play 0001.mp3
delay (1000); //10 sec, time delay to allow 0001.mp3 to finish playing
}
Aufbau:
ich hoffe jemand kann mir dabei helfen
LG Tom

