Created
March 10, 2023 13:41
-
-
Save asafmatan/7ef95c275d0039be72ed1d3331b79758 to your computer and use it in GitHub Desktop.
FreedomBox sourcecode
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*************************************************** | |
This code utilize Freedom Box design based on example by | |
By [Angelo qiao](Angelo.qiao@dfrobot.com) | |
Adaptations and xiao code by Asaf Matan | |
GNU Lesser General Public License. | |
****************************************************/ | |
#include "Arduino.h" | |
#include <HardwareSerial.h> | |
#include "DFRobotDFPlayerMini.h" | |
//Define two Serial devices mapped to the two internal UARTs | |
HardwareSerial MySerial0(0); | |
DFRobotDFPlayerMini myDFPlayer; | |
const int buttonPin = D2; | |
// State of the push button | |
int buttonState = 0; | |
void printDetail(uint8_t type, int value); | |
void setup() | |
{ | |
delay(5000); | |
MySerial0.begin(9600, SERIAL_8N1, -1, -1); | |
Serial.begin(115200); | |
pinMode(buttonPin, INPUT_PULLUP); | |
Serial.println(); | |
Serial.println(F("DFRobot DFPlayer Mini Demo")); | |
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)")); | |
if (!myDFPlayer.begin(MySerial0)) { //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); | |
} | |
Serial.println(F("DFPlayer Mini online.")); | |
myDFPlayer.volume(20); //Set volume value. From 0 to 30 | |
myDFPlayer.play(1); //Play the first mp3 | |
} | |
void loop() | |
{ | |
buttonState = digitalRead(buttonPin); | |
if (buttonState == LOW) | |
{ | |
myDFPlayer.play(1); | |
if (myDFPlayer.available()) | |
{ | |
printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states. | |
} | |
} | |
delay(500); | |
} | |
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; | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment