UART MP3 Voice Module with 8MB Flash Memory / DFR0534
Dependents: DFR0534_MP3_Test_os5 TYBLE16_MP3_Air
see /users/kenjiArai/notebook/mp3--voice-module-dfr0534/
drf0534.h
- Committer:
- kenjiArai
- Date:
- 2019-12-29
- Revision:
- 0:466200f304c9
File content as of revision 0:466200f304c9:
/* * Mbed Library program * UART MP3 Voice Module with 8MB Flash Memory / DFR0534 * * Copyright (c) 2019 Kenji Arai / JH1PJL * http://www.page.sannet.ne.jp/kenjia/index.html * https://os.mbed.com/users/kenjiArai/ * Created: December 28th, 2019 * Revised: December 29th, 2019 */ /* Reference information: http://akizukidenshi.com/catalog/g/gM-13708/ https://wiki.dfrobot.com/Voice_Module_SKU__DFR0534 */ #ifndef DFR0534_H #define DFR0534_H #include "mbed.h" #define VOL_MIN 0 #define VOL_MAX 30 enum simple_commands{ Play = 0x02, Pause, Playstop, Prev_Audio, Next_Audio, The_Directory_of_the_previous_folder = 0x0e, The_directory_of_the_next_folder, End_to_play, Increase_the_volume = 0x14, Reduce_the_volume, End_Combination_Play = 0x1c, End_repetition = 0x21, End_to_send_the_playing_time = 0x26 }; /** UART MP3 Voice Module with 8MB Flash Memory / DFR0534 * @code * #include "mbed.h" * #include "drf0534.h" * * DFR0534 mp3(PA_0, PA_1, PA_4); // tx, rx, busy * * int main() { * mp3.volume_setting(VOL_MAX / 2); * uint32_t num = mp3.total_num_of_audio(); * while(true) { * for (uint32_t i = 1; i < num + 1; i++) { * mp3.play_one(i); * mp3.get_file_name(name_buf); * printf("File name = %s\r\n", name_buf); * } * } * } * @endcode */ class DFR0534 { public: /** Create the DFR0534 object * @param PinName communication line TX & RX & Busy signal input */ DFR0534(PinName tx, PinName rx, PinName busy); /** Play specific truck * @param truck number */ void play_one(uint16_t track_num); /** set volume * @param volume value(VOL_MIN to VOL_MAX, 0 to 30) */ void volume_setting(uint8_t vol); /** increase volume * @param none */ void volume_increase(); /** decrease volume * @param none */ void volume_decrease(); /** direct command (simple type -> No parameter & no return value) * @param command */ void command(enum simple_commands cmds); /** Check the total number of audio track * @param none * @return total number of audio */ uint16_t total_num_of_audio(); /** Check the current audio track number * @param none * @return number */ uint16_t current_num_of_audio(); /** get file name * @param buffer pointer (buffer size > 32) * @return name into buffer */ void get_file_name(char *buf); /** get play time * @param none * @return time[seconds] */ uint32_t get_play_time(); /** get play back time * @param none * @return time[seconds] */ uint32_t get_play_back_time(); private: RawSerial _mp3; DigitalIn _bsy; void _rx_handler(void); void _command(uint8_t cmd_no); void _command_w_para(uint8_t cmd_no, uint8_t *parameter, uint8_t len); void _wait_busy(void); uint32_t get_time(void); CircularBuffer<char, 32> _rxbuf; // small ring buffer uint8_t _sum; char _buf[32]; }; #endif // DFR0534_H