DFPlayerMini Library porting from Arduino Library (www.github.com/dfrobot/DFPlayer_Mini_Mp3)
Revision 0:62b52a8325e3, committed 2016-11-22
- Comitter:
- kysiki
- Date:
- Tue Nov 22 17:00:13 2016 +0000
- Commit message:
- DFPlayerMini?????????
Changed in this revision
DFPlayerMini.cpp | Show annotated file Show diff for this revision Revisions of this file |
DFPlayerMini.h | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DFPlayerMini.cpp Tue Nov 22 17:00:13 2016 +0000 @@ -0,0 +1,206 @@ +/******************************************************************************* + * Copyright (C) 2014 DFRobot * + * * + * DFPlayer_Mini_Mp3, This library provides a quite complete function for * + * DFPlayer mini mp3 module. * + * www.github.com/dfrobot/DFPlayer_Mini_Mp3 (github as default source provider)* + * DFRobot-A great source for opensource hardware and robot. * + * * + * This file is part of the DFplayer_Mini_Mp3 library. * + * * + * DFPlayer_Mini_Mp3 is free software: you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 3 of * + * the License, or any later version. * + * * + * DFPlayer_Mini_Mp3 is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Lesser General Public License for more details. * + * * + * DFPlayer_Mini_Mp3 is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with DFPlayer_Mini_Mp3. If not, see * + * <http://www.gnu.org/licenses/>. * + ******************************************************************************/ + +// =========================================================================== +// DFPlayerMini.cpp +// Nov 23 2016, kysiki +// =========================================================================== +// Just a simple library for DFPlayer Mini porting from DFPlayer library V2.0. +// (https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299) + +#include "DFPlayerMini.h" +#include "mbed.h" + +DFPlayerMini::DFPlayerMini(PinName txPin, PinName rxPin) +: + mp3(txPin, rxPin) +{ + uint8_t tmp[10] = {0x7E, 0xFF, 06, 00, 00, 00, 00, 00, 00, 0xEF}; + memcpy(send_buf, tmp, 10); + is_reply = 0; + mp3.format(8,Serial::None,1); + mp3.baud(9600); +} + +void DFPlayerMini::mp3_set_reply (uint8_t state) { + is_reply = state; + send_buf[4] = is_reply; +} + +void DFPlayerMini::fill_uint16_bigend (uint8_t *thebuf, uint16_t data) { + *thebuf = (uint8_t)(data>>8); + *(thebuf+1) = (uint8_t)data; +} + +//calc checksum (1~6 byte) +uint16_t DFPlayerMini::mp3_get_checksum (uint8_t *thebuf) { + uint16_t sum = 0; + for (int i=1; i<7; i++) { + sum += thebuf[i]; + } + return -sum; +} + +//fill checksum to send_buf (7~8 byte) +void DFPlayerMini::mp3_fill_checksum () { + uint16_t checksum = mp3_get_checksum (send_buf); + fill_uint16_bigend (send_buf+7, checksum); +} + +void DFPlayerMini::send_func () { + int i; + for (i = 0; i < 10; i++) { + mp3.putc(send_buf[i]); + } +} + +void DFPlayerMini::mp3_send_cmd (uint8_t cmd, uint16_t arg) { + send_buf[3] = cmd; + fill_uint16_bigend ((send_buf+5), arg); + mp3_fill_checksum (); + send_func (); +} + +void DFPlayerMini::mp3_send_cmd (uint8_t cmd) { + send_buf[3] = cmd; + fill_uint16_bigend ((send_buf+5), 0); + mp3_fill_checksum (); + send_func (); +} + + +void DFPlayerMini::mp3_play_physical (uint16_t num) { + mp3_send_cmd (0x03, num); +} + +void DFPlayerMini::mp3_play_physical () { + mp3_send_cmd (0x03); +} + +void DFPlayerMini::mp3_next () { + mp3_send_cmd (0x01); +} + +void DFPlayerMini::mp3_prev () { + mp3_send_cmd (0x02); +} + +//0x06 set volume 0-30 +void DFPlayerMini::mp3_set_volume (uint16_t volume) { + mp3_send_cmd (0x06, volume); +} + +//0x07 set EQ0/1/2/3/4/5 Normal/Pop/Rock/Jazz/Classic/Bass +void DFPlayerMini::mp3_set_EQ (uint16_t eq) { + mp3_send_cmd (0x07, eq); +} + +//0x09 set device 1/2/3/4/5 U/SD/AUX/SLEEP/FLASH +void DFPlayerMini::mp3_set_device (uint16_t device) { + mp3_send_cmd (0x09, device); +} + +void DFPlayerMini::mp3_sleep () { + mp3_send_cmd (0x0a); +} + +void DFPlayerMini::mp3_reset () { + mp3_send_cmd (0x0c); +} + +void DFPlayerMini::mp3_play () { + mp3_send_cmd (0x0d); +} + +void DFPlayerMini::mp3_pause () { + mp3_send_cmd (0x0e); +} + +void DFPlayerMini::mp3_stop () { + mp3_send_cmd (0x16); +} + +// play mp3 file in mp3 folder in your tf card +void DFPlayerMini::mp3_play (uint16_t num) { + mp3_send_cmd (0x12, num); +} + +void DFPlayerMini::mp3_get_state () { + mp3_send_cmd (0x42); +} + +void DFPlayerMini::mp3_get_volume () { + mp3_send_cmd (0x43); +} + +void DFPlayerMini::mp3_get_u_sum () { + mp3_send_cmd (0x47); +} + +void DFPlayerMini::mp3_get_tf_sum () { + mp3_send_cmd (0x48); +} + +void DFPlayerMini::mp3_get_flash_sum () { + mp3_send_cmd (0x49); +} + +void DFPlayerMini::mp3_get_tf_current () { + mp3_send_cmd (0x4c); +} + +void DFPlayerMini::mp3_get_u_current () { + mp3_send_cmd (0x4b); +} + + +// +void DFPlayerMini::mp3_get_flash_current () { + mp3_send_cmd (0x4d); +} + +void DFPlayerMini::mp3_single_loop (uint8_t state) { + mp3_send_cmd (0x19, !state); +} + +void DFPlayerMini::mp3_single_play (uint16_t num) { + mp3_play (num); + wait_ms (10); + mp3_single_loop (true); +} + +void DFPlayerMini::mp3_DAC (uint8_t state) { + mp3_send_cmd (0x1a, !state); +} + +// +void DFPlayerMini::mp3_random_play () { + mp3_send_cmd (0x18); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DFPlayerMini.h Tue Nov 22 17:00:13 2016 +0000 @@ -0,0 +1,83 @@ +/******************************************************************************* + * Copyright (C) 2014 DFRobot * + * * + * DFPlayer_Mini_Mp3, This library provides a quite complete function for * + * DFPlayer mini mp3 module. * + * www.github.com/dfrobot/DFPlayer_Mini_Mp3 (github as default source provider)* + * DFRobot-A great source for opensource hardware and robot. * + * * + * This file is part of the DFplayer_Mini_Mp3 library. * + * * + * DFPlayer_Mini_Mp3 is free software: you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 3 of * + * the License, or any later version. * + * * + * DFPlayer_Mini_Mp3 is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Lesser General Public License for more details. * + * * + * DFPlayer_Mini_Mp3 is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with DFPlayer_Mini_Mp3. If not, see * + * <http://www.gnu.org/licenses/>. * + ******************************************************************************/ + +// =========================================================================== +// DFPlayerMini.cpp +// Nov 23 2016, kysiki +// =========================================================================== +// Just a simple library for DFPlayer Mini porting from DFPlayer library V2.0. +// (https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299) +#ifndef MBED_SHIFTREG_H +#define MBED_DFPLAYERMINI_H + +class DFPlayerMini { +public: + DFPlayerMini(PinName txPin, PinName rxPin); + void mp3_set_reply (uint8_t state); + void mp3_play_physical (uint16_t num); + void mp3_play_physical (); + void mp3_next (); + void mp3_prev (); + void mp3_set_volume (uint16_t volume); + void mp3_set_EQ (uint16_t eq); + void mp3_set_device (uint16_t device); + void mp3_sleep (); + void mp3_reset (); + void mp3_play (); + void mp3_pause (); + void mp3_stop (); + void mp3_play (uint16_t num); + void mp3_get_state (); + void mp3_get_volume (); + void mp3_get_u_sum (); + void mp3_get_tf_sum (); + void mp3_get_flash_sum (); + void mp3_get_tf_current (); + void mp3_get_u_current (); + void mp3_get_flash_current (); + void mp3_single_loop (uint8_t state); + void mp3_single_play (uint16_t num); + void mp3_DAC (uint8_t state); + void mp3_random_play (); + +private: + Serial mp3; + uint8_t send_buf[10]; + uint8_t recv_buf[10]; + uint8_t is_reply; + static void fill_uint16_bigend (uint8_t *thebuf, uint16_t data); + uint16_t mp3_get_checksum (uint8_t *thebuf); + void mp3_fill_checksum (); + void send_func (); + void mp3_send_cmd (uint8_t cmd, uint16_t arg); + void mp3_send_cmd (uint8_t cmd); +}; + +#endif \ No newline at end of file