Anzeige

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;
  }
  
}


Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book an!

Darin findest du die beliebtesten Arduino-Projekte von StartHardware. Jedes Projekt umfasst Schaltplan, Bauteile, Beschreibung und Code. Für Einsteiger gibt es ein Arduino-Schnellstart-Kapitel und einen kompakten Programmierkurs. Zusätzlich findest du Zwischenkapitel mit Expertenwissen zu den Komponenten, die verwendet werden. Alle Code-Beispiele gibt es natürlich als Download.

Weitere Informationen findest du auf der Produktseite. Klicke jetzt auf den Button, um Details anzusehen.


Welches Projekt würdest du gern auf dieser Seite finden? Worüber soll ich schreiben? *


Stefan Hermann

Ich bin Stefan und arbeite seit 2007 mit Arduino. Als Designer und Produktmanager setze ich das Board in erster Linie zum Bau von Prototypen ein. Hier teile ich meine Faszination und Erfahrung mit dir!

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.