Arduino - Musik abspielen und gleichzeitig LEDs steuern?

In meinem Projekt möchte ich mit einem Elegoo Uno R3 einen mini DVPlayer von AZDelivery (MP3-Player auf kleiner Platine) bedienen und einen Song abspielen.

Gleichzeitig sollen zwei LEDs nach einem Muster blinken.

Ist soviel Multitasking mit irgendeinem Workaround möglich?

Hier der Code, wie müsste ich das mit den LEDs einpflegen?

/***************************************************


DFPlayer - A Mini MP3 Player For Arduino
 <https://www.dfrobot.com/product-1121.html>


#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("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));

    while(true){
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.volume(30); // Set volume 0-30
  myDFPlayer.play(1);  //Play first mp3
}


void loop()
{
  static unsigned long timer = millis();
  
  if (millis() - timer > 3000) {
    timer = millis();
 //   myDFPlayer.next();  //Play next mp3 eve 
  }
  
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); 
  }
}


void printDetail(uint8_t type, int value){
  switch (type) {
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
}


Arduino, Arduino Uno, Elegoo
Warum gibt mir Arduino eine fehlermeldung raus?
#include <SoftwareSerial.h>
#include <XInput.h>


SoftwareSerial bluetooth(10, 11);  // RX, TX Pins für das HC-05 Bluetooth-Modul
XINPUT_STATE state;


const int relayPin1 = 3;  // Pin für Relay 1 (Motor 1 vorwärts)
const int relayPin2 = 4;  // Pin für Relay 2 (Motor 1 rückwärts)
const int relayPin3 = 5;  // Pin für Relay 3 (Motor 2 vorwärts)
const int relayPin4 = 6;  // Pin für Relay 4 (Motor 2 rückwärts)
const int relayPin5 = 7;  // Pin für Relay 5 (Motor 3 vorwärts)
const int relayPin6 = 8;  // Pin für Relay 6 (Motor 3 rückwärts)
const int relayPin7 = 9;  // Pin für Relay 7 (Motor 4 vorwärts)
const int relayPin8 = 10; // Pin für Relay 8 (Motor 4 rückwärts)


void setup() {
  Serial.begin(9600);
  bluetooth.begin(9600);
  
  pinMode(relayPin1, OUTPUT);
  pinMode(relayPin2, OUTPUT);
  pinMode(relayPin3, OUTPUT);
  pinMode(relayPin4, OUTPUT);
  pinMode(relayPin5, OUTPUT);
  pinMode(relayPin6, OUTPUT);
  pinMode(relayPin7, OUTPUT);
  pinMode(relayPin8, OUTPUT);
}


void loop() {
  while (bluetooth.available()) {
    XInputGetState(0, &state);
    
    // Lenkung mit dem linken Joystick
    int leftStickX = state

Das war der code und dat die fehler meldung:
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:5:1: error: 'XINPUT_STATE' does not name a type
 XINPUT_STATE state;
 ^~~~~~~~~~~~
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino: In function 'void loop()':
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:32:24: error: 'state' was not declared in this scope
     XInputGetState(0, &state);
                        ^~~~~
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:32:24: note: suggested alternative: 'static'
     XInputGetState(0, &state);
                        ^~~~~
                        static
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:32:5: error: 'XInputGetState' was not declared in this scope
     XInputGetState(0, &state);
     ^~~~~~~~~~~~~~
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:32:5: note: suggested alternative: 'XInputControl'
     XInputGetState(0, &state);
     ^~~~~~~~~~~~~~
     XInputControl
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:35:22: error: expected '}' at end of input
     int leftStickX = state
                      ^~~~~
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:35:22: error: expected '}' at end of input
Mehrere Bibliotheken wurden für "SoftwareSerial.h" gefunden
  Benutzt: C:\Users\joshu\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\SoftwareSerial
  Nicht benutzt: C:\Users\joshu\Documents\Arduino\libraries\VEGA_SoftwareSerial
exit status 1

Compilation error: 'XINPUT_STATE' does not name a type
XBOX Controller, Arduino Uno

Meistgelesene Beiträge zum Thema Arduino Uno