#define TX_PIN D6 // Connect to module's RX #define RX_PIN D7 // Connect to module's TX // Configuration const int trackDuration = 1000; // Play duration for each track (ms) void setup() { Serial1.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN); // Initialize UART randomSeed(analogRead(A0)); // Seed random generator setVolume(0x1E); // Set medium volume (0x00-0x1E) } void loop() { // Randomly select track (1=01.mp3, 2=02.mp3, 3=03.mp3) byte track = random(1, 4); // Play selected track playTrack(track); // Wait for track to play delay(trackDuration); } /** * Plays specified audio track * @param trackNum - Track number (1-3) */ void playTrack(unsigned char trackNum) { // Command format: [Header, Command, Len, Param1, TrackNum, Checksum] unsigned char cmd[6] = {0xAA, 0x07, 0x02, 0x00, trackNum, trackNum + 0xB3}; Serial1.write(cmd, 6); } /** * Sets playback volume * @param vol - Volume level (0x00=mute, 0x1E=max) */ void setVolume(unsigned char vol) { unsigned char cmd[5] = {0xAA, 0x13, 0x01, vol, vol + 0xBE}; Serial1.write(cmd, 5); }