-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathSerialMP3Player.h
More file actions
109 lines (76 loc) · 3.8 KB
/
SerialMP3Player.h
File metadata and controls
109 lines (76 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*
* SerialMP3Player.h - Library for Serial MP3 Player board from Catalex (YX5300 chip)
* Created by Salvador Rueda Pau, July 23, 2016.
* License as GPL v3 (http://www.gnu.org/licenses/gpl.html)
*/
#ifndef SerialMP3Player_h
#define SerialMP3Player_h
#include <Arduino.h>
#define CMD_NEXT 0X01 // Play next file
#define CMD_PREV 0X02 // Play previous file
#define CMD_PLAYN 0X03 // Play n file from (1-255)
#define CMD_VOL_UP 0X04 // Volumen up
#define CMD_VOL_DOWN 0X05 // Volumen down
#define CMD_SET_VOL 0X06 // Set Volume (0-30)
// 0x07 // Reserved.
#define CMD_PLAY_SLOOP 0X08 // Single loop play.
#define CMD_SEL_DEV 0X09 // Set device. 2 DEV_TF (SD Card)
#define CMD_SLEEP_MODE 0X0A
#define CMD_WAKE_UP 0X0B
#define CMD_RESET 0X0C
#define CMD_PLAY 0X0D // Play
#define CMD_PAUSE 0X0E // Pause
#define CMD_PLAY_F_FILE 0X0F // ERROR // Play n file (name not number) in the f folder
#define CMD_STOP_PLAY 0X16 // Stop
#define CMD_FOLDER_CYCLE 0X17 // Play all the files in the f folder
//#define CMD_PLAY_SHUFFLE 0x18 // Reserved
#define CMD_PLAY_W_VOL 0X22 // Play with a volumen
// Query Commands
#define CMD_PLAYING_N 0x4C // qPlaying(); // Ask for the file is playing
#define CMD_QUERY_STATUS 0x42 // qStatus(); // Ask for the status
#define CMD_QUERY_VOLUME 0x43 // qVol(); // Ask for the volumen. // Sometime board fails
#define CMD_QUERY_FLDR_TRACKS 0x4E // qFTracks(); // Ask for the number of tracks folders
#define CMD_QUERY_TOT_TRACKS 0x48 // qTTracks(); // Ask for the total of tracks
#define CMD_QUERY_FLDR_COUNT 0x4F // qTFolders(); // Ask for the number of folders
/************ Opitons **************************/
// Uncomment SoftwareSerial for Arduino Uno or Nano.
#include <SoftwareSerial.h>
#define ARDUINO_RX 15 //should connect to TX of the Serial MP3 Player module
#define ARDUINO_TX 14 //connect to RX of the module
class SerialMP3Player{
SoftwareSerial mp3 = SoftwareSerial(ARDUINO_RX, ARDUINO_TX);
//byte ansbuf[10] = {0}; // Buffer for the answers.
byte ansbuf[15] = {0}; // Buffer for the answers.
public:
void sendCommand(byte command);
void sendCommand(byte command, byte dat2);
void sendCommand(byte command, byte dat1, byte dat2);
void begin(int bps);
String decodeMP3Answer();
void playNext(); // Play next file
void playPrevious(); // Play previous file
void play(); // Play
void play(byte n); // Play n file
void play(byte n, byte vol); // Play n file with volume
void volUp(); // Volumen Up
void volDown(); // Volumen Down
void setVol(byte v); // Set Volumen (0-30)
void playSL(byte n); // Play Single loop n file.
void playSL(byte f, byte n); // Play Single loop play n file from f folder. :?
void pause(); // Pause
void playF(byte f); // Play all files in the f folder
void playFN(byte f, byte n); // Play file named n from f folder
void stop(); // Stop playing
// Query commands
void qPlaying(); // Ask for the file is playing
void qStatus(); // Ask for the status
void qVol(); // Ask for the volumen // !!! Sometimes board stop working
void qFTracks(); // Ask for the number of tracks folders // Nonsense answer
void qTTracks(); // Ask for the total of tracks
void qTFolders(); // Ask for the number of folders // Nonsense answer
private:
String sanswer();
int shex2int(char *s, int n);
String sbyte2hex(byte b);
};
#endif