반응형
    
    
    
  이전에 했던것이 그냥 001로 시작하는 mp3파일을 플레이 시키는것 이외에는 아무것도 없다.
여기서 부터 이제 공부를 해야 한다.
버턴을 달아서 mp3를 play하는 예제는 많으니 아두이노 시리얼 모니터 창을 이용해서 할 것이다.
일단 명령어는 처음곡 플레이, 이전곡, 다음곡 3개만 넣도록 하자.
나머지 볼률 업다운, 램덤 재생정도는 스스로 할 수 있을것 같다.
| //code rearranged by Javier Muñoz 10/11/2016 ask me at javimusama@hotmail.com #include <SoftwareSerial.h> #define ARDUINO_RX 2//should connect to TX of the Serial MP3 Player module #define ARDUINO_TX 3//connect to RX of the module SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//init the serial protocol, tell to myserial wich pins are TX and RX //////////////////////////////////////////////////////////////////////////////////// //all the commands needed in the datasheet(http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) static int8_t Send_buf[8] = {0} ;//The MP3 player undestands orders in a 8 int string                                  //0X7E FF 06 command 00 00 00 EF;(if command =01 next song order)  #define NEXT_SONG 0X01  #define PREV_SONG 0X02  #define CMD_PLAY_W_INDEX 0X03 //DATA IS REQUIRED (number of song) #define VOLUME_UP_ONE 0X04 #define VOLUME_DOWN_ONE 0X05 #define CMD_SET_VOLUME 0X06//DATA IS REQUIRED (number of volume from 0 up to 30(0x1E)) #define SET_DAC 0X17 #define CMD_PLAY_WITHVOLUME 0X22 //data is needed  0x7E 06 22 00 xx yy EF;(xx volume)(yy number of song) #define CMD_SEL_DEV 0X09 //SELECT STORAGE DEVICE, DATA IS REQUIRED #define DEV_TF 0X02 //HELLO,IM THE DATA REQUIRED #define SLEEP_MODE_START 0X0A #define SLEEP_MODE_WAKEUP 0X0B #define CMD_RESET 0X0C//CHIP RESET #define CMD_PLAY 0X0D //RESUME PLAYBACK #define CMD_PAUSE 0X0E //PLAYBACK IS PAUSED #define CMD_PLAY_WITHFOLDER 0X0F//DATA IS NEEDED, 0x7E 06 0F 00 01 02 EF;(play the song with the directory \01\002xxxxxx.mp3 #define STOP_PLAY 0X16 #define PLAY_FOLDER 0X17// data is needed 0x7E 06 17 00 01 XX EF;(play the 01 folder)(value xx we dont care) #define SET_CYCLEPLAY 0X19//data is needed 00 start; 01 close #define SET_DAC 0X17//data is needed 00 start DAC OUTPUT;01 DAC no output //////////////////////////////////////////////////////////////////////////////////// void setup() {   Serial.begin(115200);//Start our Serial coms for serial monitor in our pc   mySerial.begin(9600);//Start our Serial coms for THE MP3   delay(500);//Wait chip initialization is complete   sendCommand(CMD_SEL_DEV, DEV_TF);//select the TF card     delay(200);//wait for 200ms } void loop() {     int menuType;     char message[25];     display_menu();     serial_command(message);     menuType = atoi(message);//문자열을 숫자로      if(!strcmp(message,"\r\n")) return ;//엔터만 입력할 경우 재입력      else      {       Serial.print(" 선택하였습니다\r\n");     }     if(menuType > 0 && menuType < 4)      {         if(menuType ==1)        {           sendCommand(CMD_PLAY_WITHVOLUME, 0X0F02);//play the first song with volume 15 class       }       else if(menuType ==2)        {           sendCommand(NEXT_SONG, 0X0000);//play the first song with volume 15 class       }         else if(menuType ==3)        {           sendCommand(PREV_SONG, 0X0000);//play the first song with volume 15 class       }                  }     return ;       } void sendCommand(int8_t command, int16_t dat) {     delay(20);     Send_buf[0] = 0x7e; //starting byte     Send_buf[1] = 0xff; //version     Send_buf[2] = 0x06; //the number of bytes of the command without starting byte and ending byte     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]) ;//send bit to serial mp3     }     Serial.println(); } void serial_command(char* buf) {     int tempPos = 0;     while( 1)     {         while(Serial.available())         {             if (tempPos < 1000) { buf[tempPos] = c; tempPos++;   }         }         buf[tempPos] = 0;         if (tempPos > 0 && buf[tempPos-2]=='\r'  && buf[tempPos-1]=='\n') break;     }       return ;  } void display_menu() {     Serial.print("==========MP3 PLAY 프로그램==========\n\n");        Serial.print("     SERIAL MP3 module     \n");      Serial.print("********************\n");      Serial.print("*      1.play     *\n");      Serial.print("*      2.NEXT_SONG      *\n");      Serial.print("*      3.PREV_SONG  *\n");      Serial.print("********************\n");      Serial.print("메뉴을 선택하세요 : ");  } http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter | 
'아두이노' 카테고리의 다른 글
| 아두이노 버턴과 키패드- #1 (0) | 2020.02.23 | 
|---|---|
| 아두이노 Serial MP3 모듈 -#3 (2) | 2020.02.06 | 
| 아두이노 Serial MP3 모듈 -#1 (0) | 2020.02.06 | 
| 아두이노에서 문장 만들기 #1 (0) | 2020.02.04 | 
| 아두이노 reset -#4 (0) | 2020.01.27 | 
 
										
									 
										
									 
										
									
댓글