The sketch
#include <SoftwareSerial.h> #define ARDUINO_RX 5 //should connect to TX of the Serial MP3 Player module #define ARDUINO_TX 6 //connect to RX of the module SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX); static int8_t Send_buf[8] = {0} ; #define CMD_SEL_DEV 0X09 #define DEV_TF 0X02 #define CMD_PLAY_W_VOL 0X22 #define COMMON_ANODE int redPin = 9; int greenPin = 10; int bluePin = 11; const int buttonPin1 = 8; const int buttonPin2 = 2; const int buttonPin3 = 3; const int buttonPin4 = 4; const int buttonPin5 = 12; int buttonState1 = 0; int buttonState2 = 0; int buttonState3 = 0; int buttonState4 = 0; int buttonState5 = 0; void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); mySerial.begin(9600); Serial.begin(9600); delay(500);//Wait chip initialization is complete sendCommand(CMD_SEL_DEV, DEV_TF);//select the TF card delay(200);//wait for 200ms } void loop() { buttonState1 = digitalRead(buttonPin1); if (buttonState1 == HIGH) { setColor(0, 0, 255); // blue sendCommand(CMD_PLAY_W_VOL, 0X0F01);//This is file you want to play. delay(700);//waiting time for the file above. } else { setColor(0, 0, 0); } buttonState2 = digitalRead(buttonPin2); if (buttonState2 == HIGH) { setColor(0, 255, 0); // green sendCommand(CMD_PLAY_W_VOL, 0X0F02); delay(700); } else { setColor(0, 0, 0); } buttonState3 = digitalRead(buttonPin3); if (buttonState3 == HIGH) { setColor(255, 0, 0); // red sendCommand(CMD_PLAY_W_VOL, 0X0F03); delay(700); } else { setColor(0, 0, 0); } buttonState4 = digitalRead(buttonPin4); if (buttonState4 == HIGH) { setColor(76, 4, 163); // dark violet sendCommand(CMD_PLAY_W_VOL, 0X0F04); delay(700); } else { setColor(0, 0, 0); } buttonState5 = digitalRead(buttonPin5); if (buttonState5 == HIGH) { setColor(255, 255, 0);// yellow sendCommand(CMD_PLAY_W_VOL, 0X0F05); delay(700); } else { setColor(0, 0, 0); } } void sendCommand(int8_t command, int16_t dat) { delay(20); Send_buf[0] = 0x7e; Send_buf[1] = 0xff; Send_buf[2] = 0x06; Send_buf[3] = command; Send_buf[4] = 0x00;//0x00 = no feedback, 0x01 = feedback Send_buf[5] = (int8_t)(dat >> 8);//datah Send_buf[6] = (int8_t)(dat); //datal Send_buf[7] = 0xef; //ending byte for(uint8_t i=0; i<8; i++)// { mySerial.write(Send_buf[i]) ; } } void setColor(int red, int green, int blue) { #ifdef COMMON_ANODE red = 255 - red; green = 255 - green; blue = 255 - blue; #endif analogWrite(redPin, red); analogWrite(greenPin, green); analogWrite(bluePin, blue); } |
No comments:
Post a Comment