ich habe ja bereist eure fantastische Hilfe bei meinem beiden anderen Post (1. SBUS, 2. df Player) bekommen.
Jetzt versuche ich, beides miteinander zu „verheiraten“. Leider, wie ich befürchtete, ohne Erfolg.
Der serielle Monitor gibt nichts aus, ich denke, das liegt daran, das ich zwei serielle Schnittstellen verwende. Ton wird auch nicht abgespielt.
Jedenfalls habe ich folgendes vor:
Wenn ich einen bestimmten Wert über einen definiteren Kanal empfange, möchte ich, dass Lied 1 abgespielt wird. Das gleiche bei Lied 2-6.
Wenn ich den Beispiel Sketch vom SBUS verwende, kann ich diese Werte auch ermitteln. Diese frage ich in meinem Sketch auch ab.
Beides alleine funktioniert grundsätzlich: SBUS abfragen (und Servo steuern, aber das ist ein anderer Sketch und hat hier erstmal nichts mit zu tun) oder Lieder abspielen mit dem Beispiel Sketch von df player
#include "sbus.h"
#include <SoftwareSerial.h>
#include "DFRobotDFPlayerMini.h"
bfs::SbusRx sbus_rx(&Serial3);
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
#define FPSerial Serial2
void setup() {
Serial.begin(9600);
sbus_rx.Begin();
FPSerial.begin(9600);
delay(1);
myDFPlayer.volume(10);
delay(20);
}
void loop() {
if (sbus_rx.Read()) {
bfs::SbusData data = sbus_rx.data();
data = sbus_rx.data();
for (int8_t i = 0; i < data.NUM_CH; i++) {
Serial.print(data.ch[i]);
Serial.print("\t");
}
Serial.print(data.lost_frame);
Serial.print("\t");
Serial.println(data.failsafe);
if (data.ch[12] == 221) {
myDFPlayer.play(1);
}
if (data.ch[12] == 541) {
myDFPlayer.play(2);
}
if (data.ch[12] == 862) {
myDFPlayer.play(3);
}
if (data.ch[12] == 1183) {
myDFPlayer.play(4);
}
if (data.ch[12] == 1504) {
myDFPlayer.play(5);
}
if (data.ch[12] == 1824) {
myDFPlayer.play(6);
}
delay(100);
}
}
Der Mega hat 3 weitere serielle Schnittstellen, da brauchst du SoftwareSerial nicht zu verwenden.
Allerdings ist dein Slketch nicht verständlich, wie du die seriellen Schnittstellen jeweils zugewiesen hast. Das solltest du unbedingt aufräumen und für uns auch kommentieren, damit jeder erkennen kann, was du damit erreichen möchtest.
Okay und besten Dank! Kann ich rausnehmen, aber sollte eigentlich auch so funktionerien. Kommt noch aus dem Beispiel Sketch.
Und die seriellen habe ich wie folg zugewiesen(steht auch im Sketch)
ich würde das ja tauschen , wie willst Du denn die Lautstärke einstellen wenn der DF noch nicht gestartet ist.
und nun , geht immer noch nicht ?
ich hatte doch geschrieben "schau Dir das Beispiel noch mal an ". Darin ist auch eine Fehlerbehandlung für die Verbindung enthalten. Das muss Du natürlich für Deine Schnittstelle anpassen.
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){
geht denn der DF Player ohne die Abfrage von dem SBus ? Damit man mal schrittweise vorgehen kann.
Dann must Du jetzt mal rausbekommen was das ist, Du hast ja da mehrere Serielle ausgaben drin, so wirst Du nicht wissen was was ist. Also schreib dir noch was an Text davor.
Nachtrag
was jetzt doch keine Ausgabe ?
Ich denke Du analysierst das mal gründlich und meldest Dich dann noch mal.
Wenns an dem SBus liegt dann muss ich passen, da hab ich keine Ahnung von.