kartonman

control df player with buttons

Sep 17th, 2021 (edited)
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. #include "SoftwareSerial.h"
  2. SoftwareSerial mySerial(10, 11);
  3. # define Start_Byte 0x7E
  4. # define Version_Byte 0xFF
  5. # define Command_Length 0x06
  6. # define End_Byte 0xEF
  7. # define Acknowledge 0x00 //Returns info with command 0x41 [0x01: info, 0x00: no info]
  8.  
  9. # define ACTIVATED LOW
  10.  
  11. int buttonNext = 2;
  12. int buttonPause = 3;
  13. int buttonPrevious = 4;
  14. int volumeUP = 5;
  15. int volumeDOWN = 6;
  16. int volume = 15;
  17. boolean isPlaying = false;
  18.  
  19. //*******************************************************
  20. void setup () {
  21.  
  22. pinMode(buttonPause, INPUT);
  23. digitalWrite(buttonPause,HIGH);
  24. pinMode(buttonNext, INPUT);
  25. digitalWrite(buttonNext,HIGH);
  26. pinMode(buttonPrevious, INPUT);
  27. digitalWrite(buttonPrevious,HIGH);
  28. pinMode(volumeUP, INPUT);
  29. pinMode(volumeDOWN, INPUT);
  30. digitalWrite(volumeUP, HIGH);
  31. digitalWrite(volumeDOWN, HIGH);
  32.  
  33. mySerial.begin (9600);
  34. delay(1000);
  35. playFirst();
  36. isPlaying = true;
  37. }
  38. //**********************************************************
  39. void loop () {
  40.  
  41. if (digitalRead(buttonPause) == ACTIVATED) {
  42. if(isPlaying) {
  43. pause();
  44. isPlaying = false;
  45. }else {
  46. isPlaying = true;
  47. play();
  48. }
  49. }
  50.  
  51. if (digitalRead(buttonNext) == ACTIVATED) {
  52. if(isPlaying) {
  53. playNext();
  54. }
  55. }
  56.  
  57. if (digitalRead(buttonPrevious) == ACTIVATED) {
  58. if(isPlaying) {
  59. playPrevious();
  60. }
  61. }
  62.  
  63. if(digitalRead(volumeUP) == ACTIVATED){
  64. volumeINC();}
  65. if(digitalRead(volumeDOWN) == ACTIVATED){
  66. volumeDEC();
  67. }
  68. }
  69.  
  70. void playFirst(){
  71. execute_CMD(0x3F, 0, 0);
  72. delay(500);
  73. execute_CMD(0x06, 0, volume);
  74. delay(500);
  75. execute_CMD(0x11,0,1);
  76. delay(500);
  77. }
  78.  
  79. void pause(){
  80. execute_CMD(0x0E,0,0);
  81. delay(500);
  82. }
  83.  
  84. void play(){
  85. execute_CMD(0x0D,0,1);
  86. delay(500);
  87. }
  88.  
  89. void playNext(){
  90. execute_CMD(0x01,0,1);
  91. delay(500);
  92. }
  93.  
  94. void playPrevious(){
  95. execute_CMD(0x02,0,1);
  96. delay(500);
  97. }
  98.  
  99. void volumeINC(){
  100. volume = volume+1;
  101. if(volume==31)
  102. {
  103. volume=30;
  104. }
  105. execute_CMD(0x06, 0, volume);
  106. delay(500);
  107. }
  108.  
  109. void volumeDEC(){
  110. volume = volume-1;
  111. if(volume==-1)
  112. {
  113. volume=0;
  114. }
  115. execute_CMD(0x06, 0, volume);
  116. delay(500);
  117. }
  118.  
  119. void execute_CMD(byte CMD, byte Par1, byte Par2)
  120. // Excecute the command and parameters
  121. {
  122. // Calculate the checksum (2 bytes)
  123. word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);
  124. // Build the command line
  125. byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge,
  126. Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte};
  127. //Send the command line to the module
  128. for (byte k=0; k<10; k++)
  129. {
  130. mySerial.write( Command_line[k]);
  131. }
  132. }
  133.  
Add Comment
Please, Sign In to add comment