Applausmaschine mit Arduino und Sound

Natürlich sind wir ganz großartige Menschen. Und damit wir von anderen Leuten unabhängig sind, bauen wir uns heute unsere eigene Applausmaschine, die uns auf Knopfdruck Anerkennung schenkt.

Wir verwenden dazu das DFPlayer-Modul. Mehr Informationen dazu findest du in folgendem Beitrag: DFPlayer Mini mit Arduino.

Bauteile

Schaltplan

Die Schaltung besteht aus dem DFPlayer Mini, einen Lautsprecher und einem Taster. Der DFPlayer ist mit GND und 5V versorgt und an die SoftwareSerial-Pins 10 und 11 verbunden. Die Verbindung mit dem Pin 11 bekommt noch einen 1kOhm Widerstand. Der Lautsprecher ist direkt an den DFPlayer angeschlossen.

Da wir den internen Pullup-Widerstand des Arduinos verwenden, benötigen wir für den Taster keinen extra Widerstand und verbinden ihn mit dem GND und dem digitalen Pin 7.

Sound

Kopiere die folgende Datei auf eine MicroSD-Card. Achte darauf dass diese im Format FAT16 oder FAT32 formatiert ist. Details dazu sind ebenfalls hier zu finden: DFPlayer Mini mit Arduino.

Sound: https://starthardware.org/wp-content/uploads/2020/05/35489__charel-sytze__applause-1.mp3

Die Sounddatei ist von Charel Sytze von Freesound.org und unter CC-BY-Lizenz veröffentlicht.

Code

Hier der gekürzte Code. Er liefert nur eine verkürzte Fehlerausgabe, ist aber leichter zu lesen und zu verstehen. Die Fehlerausgabe findet übrigens im Seriellen Monitor statt.

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

int buttonPin = 7;                        // Pin, an dem der Taster angeschlossen ist

void setup() {
  mySoftwareSerial.begin(9600);           // Start der SoftwareSerial Kommunikation
  Serial.begin(115200);                   // Start der "normalen" seriellen Kommunikation für den Serial Monitor

  if (!myDFPlayer.begin(mySoftwareSerial)) {  // Verbindung der Software Serial Kommunikation mit dem 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){                          // Programmabbruch -> while(true) ist Endlosschleife
      delay(0);                           // Code für den Watchdog des ESP8266, nicht relevant für Arduino UNO
    }
  }
    
  myDFPlayer.volume(10);                  // Lautstärke auf 10 ( Werte von 0 – 30 ist möglich)
  pinMode(buttonPin, INPUT_PULLUP);       // Taster wird mit internem Pullup-Widerstand verwendet
}

void loop() {
  if (digitalRead(buttonPin) == LOW){     // wenn der Taster gedrückt wird
      myDFPlayer.play(1);                 // spiele das erste MP3 von der SD-Karte
  }
}

Hier findest du noch den vollständigen Code mit Fehlerausgaben und zum debuggen, falls es Probleme gibt.

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

int buttonPin = 7;

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:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true){
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.volume(10);  // Lautstärke auf 10 ( Werte von 0 – 30 ist möglich)

  pinMode(buttonPin, INPUT_PULLUP);
}

void loop()
{
  if (digitalRead(buttonPin) == LOW){     // wenn der Taster gedrückt wird
      myDFPlayer.play(1);                 // spiele das erste MP3 von der SD-Karte
  }
}

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 DFPlayerUSBInserted:
      Serial.println("USB Inserted!");
      break;
    case DFPlayerUSBRemoved:
      Serial.println("USB Removed!");
      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;
  }
  
}

Ich würde mich freuen, wenn du diesen Beitrag bewerten würdest :-)

Durchschnittliche Bewertung 0 / 5. Anzahl Bewertungen: 0

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Es tut uns leid, dass der Beitrag für dich nicht hilfreich war!

Lasse uns diesen Beitrag verbessern!

Wie können wir diesen Beitrag verbessern?

Ich hoffe, der Beitrag hilft dir weiter. Und falls du weitere Fragen hast, stelle sie gern hier im Arduino-Forum.

Du willst noch tiefer in die Materie einsteigen? Dann präsentiere ich dir die neuen E-Books von StartHardware:

  • 20 Lektionen
  • Projektbasiert und kurzweilig
  • Aus den Erfahrungen unzähliger Workshops
  • Sofortiger Download

  • Die beliebtesten Projekte von StartHardware
  • Mit Code, Schaltplan und Erklärungen
  • Fachwissen-Kapitel
  • Sofortiger Download


Willst du lieber ein Buch zum Anfassen? Dann werde mit diesem hier zum Arduino-Experten! Arduino: Kompendium: Elektronik, Programmierung und Projekte* – Damit lernst du alle Tricks!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

 

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.