DFPlayerMini Library porting from Arduino Library (www.github.com/dfrobot/DFPlayer_Mini_Mp3)
Dependents: pinball pinball-sensZero
Revision 0:62b52a8325e3, committed 2016-11-22
- Comitter:
- kysiki
- Date:
- Tue Nov 22 17:00:13 2016 +0000
- Child:
- 1:a637be95c1ea
- 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