Guest User

Untitled

a guest
Jun 24th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. #include "stdint.h"
  2. #include "SoftwareSerial.h"
  3. #include "DFRobotDFPlayerMini.h"
  4.  
  5. #define interruptPin 2
  6. #define softSerialRx 10
  7. #define softSerialTx 11
  8. #define debounceDelayMillis 1000
  9.  
  10.  
  11. volatile uint32_t lastInterruptTime = 0;
  12. volatile bool interruptOccured = false;
  13.  
  14. SoftwareSerial softSerial(softSerialRx, softSerialTx);
  15. DFRobotDFPlayerMini player;
  16.  
  17.  
  18. void setup() {
  19. softSerial.begin(9600);
  20. Serial.begin(115200);
  21.  
  22. pinMode(interruptPin, INPUT_PULLUP);
  23. attachInterrupt(digitalPinToInterrupt(interruptPin), interruptHandler, FALLING);
  24.  
  25. Serial.println(F("Initing player ..."));
  26. // `player.begin(stream)` returns true when module is initialized
  27. if (!player.begin(softSerial)) {
  28. Serial.println(F("... failed"));
  29. while(true) {
  30. // never leave this loop since initialization went wrong
  31. }
  32. }
  33. Serial.println(F("... ready."));
  34.  
  35. // volume: 0 ... 30
  36. player.volume(30);
  37.  
  38. // when using `player.readFileCounts()` player module does not respond to further commands
  39. // Serial.println(player.readFileCounts());
  40. }
  41.  
  42.  
  43. void loop() {
  44. // read status messages from DFPlayerMini on its software serial port when available
  45. if (player.available()) {
  46. printPlayerStatus(player.readType(), player.read());
  47. }
  48.  
  49. if (interruptOccured) {
  50. Serial.println("Button pressed");
  51. player.next();
  52. interruptOccured = false;
  53. }
  54. }
  55.  
  56.  
  57. void interruptHandler() {
  58. uint32_t interruptTime = millis();
  59. if (interruptTime - lastInterruptTime > debounceDelayMillis) {
  60. interruptOccured = true;
  61. }
  62. lastInterruptTime = interruptTime;
  63. }
  64.  
  65.  
  66. void printPlayerStatus(uint8_t type, uint16_t value){
  67. switch (type) {
  68. case TimeOut:
  69. Serial.println(F("Time Out!"));
  70. break;
  71. case WrongStack:
  72. Serial.println(F("Stack Wrong!"));
  73. break;
  74. case DFPlayerCardInserted:
  75. Serial.println(F("Card Inserted!"));
  76. break;
  77. case DFPlayerCardRemoved:
  78. Serial.println(F("Card Removed!"));
  79. break;
  80. case DFPlayerCardOnline:
  81. Serial.println(F("Card Online!"));
  82. break;
  83. case DFPlayerPlayFinished:
  84. Serial.print(F("Number: "));
  85. Serial.print(value);
  86. Serial.println(F(" Play Finished!"));
  87. break;
  88. case DFPlayerError:
  89. Serial.print(F("DFPlayerError: "));
  90. switch (value) {
  91. case Busy:
  92. Serial.println(F("Card not found"));
  93. break;
  94. case Sleeping:
  95. Serial.println(F("Sleeping"));
  96. break;
  97. case SerialWrongStack:
  98. Serial.println(F("Get Wrong Stack"));
  99. break;
  100. case CheckSumNotMatch:
  101. Serial.println(F("Check Sum Not Match"));
  102. break;
  103. case FileIndexOut:
  104. Serial.println(F("File Index Out of Bound"));
  105. break;
  106. case FileMismatch:
  107. Serial.println(F("Cannot Find File"));
  108. break;
  109. case Advertise:
  110. Serial.println(F("In Advertise"));
  111. break;
  112. default:
  113. break;
  114. }
  115. break;
  116. default:
  117. break;
  118. }
  119. }
Add Comment
Please, Sign In to add comment