INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
DFplayer / Zufallszahl
15.10.2019, 21:37
Beitrag #1
DFplayer / Zufallszahl
Hallo zusammen,

ich hefte mich mal an diesen Thread, da ich auch Probleme mit einem DFPlayer habe.

Wie ich bereits in einem anderen Beitrag geschrieben habe (Verlinkung folgt), möchte ich für unseren Sohnemann eine "Alarmbox" von Feuerwehrmann Sam basteln.

Per Knopfdruck wird eine Zufallszahl generiert und Haupt-Feuerwehrmann Steele gibt dann per DF-Player das Einsatz-Szenario per Lautsprecher aus.

Nun zu meinem Problem.

Sobald ich in der ausgelagerten Funktion "LCD" die Wiedergabefunktion aktiviere geht hinten und vorne nichts mehr. Das LCD sowie der Serielle Monitor zeigen an was sie gerade wollen, jedoch nicht das gewünschte.
kommentiere ich die Anweisung "myDFPlayer.play(TrackXY)" aus läuft wieder alles bis auf die Tonausgabe bzw. abspielen des gewünschten Tracks.

Hier ein Auszug aus dem Code:
Code:
[code]
//Bibliothek einbinden
#include "Arduino.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
//##############################################
//Eingänge
#define knopf 2
#define LED 13
//##############################################
//Variable
int randNumber;
int altVal;
//##############################################
void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  pinMode (knopf, INPUT);
  pinMode (LED, OUTPUT);
  myDFPlayer.volume(12);  //Set volume value. From 0 to 30
  lcd.init();
  int altVal = 0;

}
//##############################################
//##############################################
//##############################################
void loop()
{
  int val = digitalRead(knopf);
  if (val != altVal) {
    altVal = val;
    if (val == HIGH) {
      lampe();
      Alarm();
      LCD();
    }

  }
  else
  {
    Serial.println("Warte auf Einsatz");
    delay(500);
  }
}

Hier die ausgelagerte Funktion (bzw. case 1 Big Grin )
Code:
//Alarmanzeige
void LCD()
{
  switch (randNumber)
  {
    case 1:
      Serial.println("Alarm in den Bergen");
      lcd.clear();
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("Alarm in den");
      lcd.setCursor(0, 1);
      lcd.print("Ponty Pandy Bergen");
      myDFPlayer.play(8);  //Track 8 (0008)
      delay(1000);
      break;

wird der "myDFPlayer.play() Teil auskommentiert läuft alles super...
Zufallszahlen werden generiert und das LCD zeigt auch wieder alles richtig an.

Wer weiß noch einen Rat?? Huh Huh

Habe auch schon alle Verbindungen gecheckt, sowie von einem Nano auf einen Uno gewechselt - ohne Erfolg ....

Danke schon mal wieder im Voraus für Eure schnelle und tolle Unterstützung Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.10.2019, 21:40
Beitrag #2
RE: Mp3 und licht per Tastendruck /DFplayer
Entweder beim Code von LCD() fehlt ein Teil oder das ist Dein Fehler.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.10.2019, 21:44
Beitrag #3
RE: Mp3 und licht per Tastendruck /DFplayer
Warum du hier einen älteren Thread kaperst, bei dem es um eine ganz andere Sache geht, kann ich nicht verstehen.

Erstelle mit deinem Problem einen eigenen, neuen Thread, dann wird dieser auch besser gefunden und dir wird leichter geholfen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.10.2019, 08:27
Beitrag #4
RE: DFplayer / Zufallszahl
Hallo hotsystems,

sorry. Dachte ich hänge mich dran, weil es hier auch um den DF-Player ging.
Gibt es noch eine Möglichkeit diesen Thread hier umzubenennen??

@Tommy56 oder @all :-)

Was könnte in der LCD Funktion noch fehlen?? - Der Post ist nur ein Programmausschnitt von Fall 1. Die anderen sehen gleich aus.
Laut der verwendeten Libary ist der Befehl zum abspielen eines einzelnen Tracks "myDFPlayer.play(tracknummer im 0000-Format).

Danke schon mal im Voraus und Sorry für das Entern des alten Threads :-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.10.2019, 08:46
Beitrag #5
RE: DFplayer / Zufallszahl
Ein Moderator war schon so nett und hat deinen Thread vom Rest abgetrennt und umbenannt.

Dein geposteter Sketch ist nicht vollständig.
In der Funktion LCD() fehlt ein Teil, die Funktionen lampe() und Alarm() fehlen komplett. Daher ist eine Fehlersuche schwer möglich.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.10.2019, 16:33
Beitrag #6
RE: DFplayer / Zufallszahl
Kommt hier noch eine Ergänzung oder dürfen wir weiter raten ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.10.2019, 14:43
Beitrag #7
RE: DFplayer / Zufallszahl
Hallo hotsystems und Co :-)

habe mir gestern nach der Arbeit nochmal das Projekt angesehen und den Code überflogen.
Alternativ habe ich dann den Beispiel-Sketch vom DF-Player auf den Uno geladen und es funktionierte (das Beispiel).

Habe dann im Setup noch etwas umschreiben müssen bzw. umkopiert :-)

Genaueres folgt heute Abend!

Danke und Gruß
Hanibal
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.10.2019, 18:54 (Dieser Beitrag wurde zuletzt bearbeitet: 18.10.2019 18:55 von Hanibal_Smith.)
Beitrag #8
RE: DFplayer / Zufallszahl
Hallo Leute, Big Grin

hat zwar ein wenig gedauert, dafür funktioniert es nun so wie gewünscht.
Big Grin Big Grin Big Grin Big Grin Big Grin

Die einzige Änderung die ich gemacht habe, war im Setup-Teil.
Hier habe ich Teile vom Beispiel-Sketch des DFPlayer bzw. der Libary in meinem Code implementiert und schon lief es.

hier nun der gesamte Code:

Code:
//Bibliotheken einbinden
#include "Arduino.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
//#######################################################################
//Eingänge
#define knopf 2
#define LED 13
//#######################################################################
//Variable
int randNumber;
int altVal;
//#######################################################################
void setup()
{

  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Feuerwehrmann");
  lcd.setCursor(0, 1);
  lcd.print("SAM Alarmbox");

  //DFPlayer Initialisierung
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);

  Serial.println(F("Feuerwehrmann Sam Alarmbox"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Kommunikation zum DFPlayer
    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); //time out 500ms

  //----Set volume----
  myDFPlayer.volume(20);  //Set volume value (0~30).
  myDFPlayer.volumeUp(); //Volume Up
  myDFPlayer.volumeDown(); //Volume Down

  //----Set different EQ----
  myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
  //  myDFPlayer.EQ(DFPLAYER_EQ_POP);
  //  myDFPlayer.EQ(DFPLAYER_EQ_ROCK);
  //  myDFPlayer.EQ(DFPLAYER_EQ_JAZZ);
  //  myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC);
  //  myDFPlayer.EQ(DFPLAYER_EQ_BASS);

  //----Set device we use SD as default----
  //  myDFPlayer.outputDevice(DFPLAYER_DEVICE_U_DISK);
  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
  //  myDFPlayer.outputDevice(DFPLAYER_DEVICE_AUX);
  //  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SLEEP);
  //  myDFPlayer.outputDevice(DFPLAYER_DEVICE_FLASH);

  //----Mp3 control----
  //  myDFPlayer.sleep();     //sleep
  //  myDFPlayer.reset();     //Reset the module
  //  myDFPlayer.enableDAC();  //Enable On-chip DAC
  //  myDFPlayer.disableDAC();  //Disable On-chip DAC
  //  myDFPlayer.outputSetting(true, 15); //output setting, enable the output and set the gain to 15

  //#######################################################################
  //Ein-/Ausgänge

  pinMode (knopf, INPUT);
  pinMode (LED, OUTPUT);
  int altVal = 0;
}
//#######################################################################

//#######################################################################
void loop()
{
  int val = digitalRead(knopf);
  if (val != altVal) {
    altVal = val;
    if (val == HIGH) {
      lampe();
      Alarm();
      LCD();
    }
  }
  else
  {
    Serial.println("Warte auf Einsatz");
    delay(500);
  }
}
//#######################################################################
//Alarm
void lampe()
{
  for (int i = 0; i < 5; i++)
  {
    digitalWrite(LED, HIGH);
    delay(250);
    digitalWrite(LED, LOW);
    delay(250);
  }
}
//#######################################################################
//Zufallszahl
int Alarm()
{
  randomSeed(analogRead(0));
  //Serial.println();
  randNumber = random(10);
  Serial.print(randNumber);
  //Serial.print(" ");
  return randNumber;
}
//#######################################################################
//Alarmanzeige
void LCD()
{
  switch (randNumber)
  {
    case 1:
      Serial.println("Feuer im Kabeljau-Cafe");
      lcd.clear();
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("Feuer im");
      lcd.setCursor(0, 1);
      lcd.print("Kabeljau-Cafe");
      myDFPlayer.play(1);  //0001.mp3
      delay(500);
      break;

    case 2:
      Serial.println("Kinder werden vermisst");
      lcd.clear();
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("Kinder werden");
      lcd.setCursor(0, 1);
      lcd.print("vermisst");
      myDFPlayer.play(2);
      delay(500);
      break;

    case 3:
      Serial.println("Unfall am Strand");
      lcd.clear();
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("Unfall am ");
      lcd.setCursor(0, 1);
      lcd.print("Strand");
      myDFPlayer.play(3);
      delay(500);
      break;

    case 4:
      Serial.println("Norman ist vom Kai gestuerzt");
      lcd.clear();
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("Norman ist vom");
      lcd.setCursor(0, 1);
      lcd.print("Kai gestuerzt");
      myDFPlayer.play(4);
      delay(500);
      break;

    case 5:
      Serial.println("Waldbrand durch Blitz");
      lcd.clear();
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("Waldbrand durch ");
      lcd.setCursor(0, 1);
      lcd.print("Blitzschlag");
      myDFPlayer.play(5);
      delay(500);
      break;

    case 6:
      Serial.println("Feuer am Bahnhof");
      lcd.clear();
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("Feuer am");
      lcd.setCursor(0, 1);
      lcd.print("Bahnhof");
      myDFPlayer.play(6);
      delay(500);
      break;

    case 7:
      Serial.println("Feuer bei den Floods");
      lcd.clear();
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("Feueralarm bei ");
      lcd.setCursor(0, 1);
      lcd.print("den Floods");
      myDFPlayer.play(7);
      delay(500);
      break;

    case 8:
      Serial.println("Feuer in den Ponty Pandy Bergen");
      lcd.clear();
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("Feuer in den ");
      lcd.setCursor(0, 1);
      lcd.print("PontyPandyBergen");
      myDFPlayer.play(8);  //Play the first mp3
      delay(500);
      break;

    case 9:
      Serial.println("2 Einsätze");
      lcd.clear();
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("Feuer im ");
      lcd.setCursor(0, 1);
      lcd.print("Kabeljau-Cafe + ");
      myDFPlayer.play(9);  //Play the first mp3
      delay(500);
      break;
  }
}

Vielen Dank nochmal für die tolle und schnelle Unterstüzung und Gedankengänge!!

Wenn das Projekt abgeschlossen ist, würde ich es gerne nochmal mit Bilder in einem separaten Thread vorstellen - sofern das gewünscht ist :-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Mp3 und licht per Tastendruck /DFplayer MotD 62 14.812 30.04.2019 21:22
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste