极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: eagler8

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)

[复制链接]
 楼主| 发表于 2019-8-8 09:06:30 | 显示全部楼层
串口查询指令

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 09:08:43 | 显示全部楼层
2)AD按键模式
模块还支持AD按键控制方式,取代了传统了矩阵键盘的接法,这样做的好处是充分利用了MCU越来越强大的AD功能。设计简约而不简单,我们模块默认配置2个AD口,20个按键的阻值分配。按键使用示意原理图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 09:10:46 | 显示全部楼层
3)IO模式
本模块也支持简单的IO模式

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 14:30:00 | 显示全部楼层
  1. /*
  2. 【Arduino】66种传感器模块系列实验(85)
  3. 实验八十五:开源 Mini MP3 Player TF卡播放器模块(YX5200-24SS)
  4. 程序之一,循环播放TF卡内0003.MP3(MP3文件夹内),音量20
  5. Arduino-------dfplayer
  6. 5V-------------VCC
  7. GND-----------GND
  8. D2-----------TXD
  9. D3-----------RXD
  10. */

  11. #include "SoftwareSerial.h"
  12. #include "DFRobotDFPlayerMini.h"

  13. SoftwareSerial mySoftwareSerial(2, 3);

  14. DFRobotDFPlayerMini myDFPlayer;

  15. void setup()
  16. {
  17. mySoftwareSerial.begin(9600);

  18. myDFPlayer.begin(mySoftwareSerial);

  19. myDFPlayer.volume(20);

  20. myDFPlayer.loop(3);   
  21. }

  22. void loop()
  23. {
  24. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 14:47:39 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 15:12:10 | 显示全部楼层
收集整理的使用<DFRobotDFPlayerMini>库的控制语句汇总

  1. //收集整理的使用<DFRobotDFPlayerMini>库的控制语句汇总
  2.   
  3.   myDFPlayer.start();  //播放mp3
  4.   myDFPlayer.pause();  //暂停mp3
  5.   myDFPlayer.next();  //播放下一个mp3
  6.   myDFPlayer.enableLoop();  //启用循环
  7.   myDFPlayer.disableLoop();  //禁用循环
  8.   myDFPlayer.stopAdvertise(); //停止做广告
  9.   mp3Player.volume(10); //音量为10(0-30)
  10.   myDFPlayer.previous();  //播放上一个的mp3
  11.   myDFPlayer.randomAll(); //随机播放所有mp3
  12.   myDFPlayer.enableLoopAll(); //循环所有mp3文件
  13.   myDFPlayer.disableLoopAll(); //停止循环所有mp3文件
  14.   myDFPlayer.play(1);  //播放文件夹里名为0001.mp3的音乐
  15.   myDFPlayer.loop(1);  //循环文件夹里名为0001.mp3的音乐
  16.   myDFPlayer.loopFolder(5); //循环文件夹SD:/ 05中的所有mp3文件
  17.   myDFPlayer.playMp3Folder(4); //在SD中播放特定的mp3:/MP3/0004.mp3;文件名(0~65535)
  18.   myDFPlayer.advertise(3); //在SD中宣传特定的mp3广告:/ADVERT/0003.mp3;文件名(0~65535)
  19.   myDFPlayer.playFolder(15, 4);  //在SD中播放特定的mp3:/ 15/004.mp3;文件夹名称(1~99);文件名(1~255)
  20.   myDFPlayer.playLargeFolder(2, 999); //在SD中播放特定的mp3:/ 02/004.mp3;文件夹名称(1~10);文件名(1~1000)
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 16:47:14 | 显示全部楼层
几点注意事项

1、DFPlayer Mini 可以读取MP3 & WAV 档案格式,但试过档案长度1秒以下无法播放。

2、所有音乐档案一定要放在/mp3 资料夹里

3、音乐档案名称一定要使用4 个字,如0001.mp3, 0002.mp3…..0255.mp3

4、音乐档案超过4个字后则无限制,像是0001_Bruno_Mars_Count_On Me.mp3 是没问题的。

5、如果你从SD 卡上删掉某个档案,DFPlayer Mini 还是有办法把它播出来,好怪!后来我从新格式化SD 卡才成功播放我要的音乐档案。

6、Delay(sec); 这个指是是告诉Arduino 你要播放音乐的长度,如果你给的秒数不足,而下个指令又是要播另一首,则Arduino 就会把目前播放中断,而继续播下一首。

7、mp3_play (74); 这个指令是播放0074.mp3 这个音乐档。

8、不要直接把Arduino的5V给DFPlayer Mini使用,一定要分别供给DFPlayer Mini电源,不然喇叭会发出很大的杂音。

9、测试时平均电流150ma左右,模块发烫,可能要注意控制电流。

10、偶然发现这个模块使用不同的库,相关的控制语句完全不相同。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 16:54:10 | 显示全部楼层
  1. /*
  2. 【Arduino】66种传感器模块系列实验(85)
  3. 实验八十五:开源 Mini MP3 Player TF卡播放器模块(YX5200-24SS)
  4. 程序之二,每3秒切换到下一首歌曲,音量20(速播TF卡内所有MP3歌曲)
  5. 可以打印来自dfplayer的详细信息以处理不同的错误和状态。
  6. Arduino-------dfplayer
  7. 5V-------------VCC
  8. GND-----------GND
  9. D10-----------TXD
  10. D11-----------RXD
  11. */

  12. #include "Arduino.h"
  13. #include "SoftwareSerial.h"
  14. #include "DFRobotDFPlayerMini.h"

  15. SoftwareSerial mySoftwareSerial(10, 11);
  16. DFRobotDFPlayerMini myDFPlayer;
  17. void printDetail(uint8_t type, int value);

  18. void setup()
  19. {
  20.   mySoftwareSerial.begin(9600);
  21.   Serial.begin(115200);

  22.   Serial.println();
  23.   Serial.println(F("DFRobot DFPlayer Mini Demo"));
  24.   Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  25.   if (!myDFPlayer.begin(mySoftwareSerial)) {  
  26.     Serial.println(F("Unable to begin:"));
  27.     Serial.println(F("1.Please recheck the connection!"));
  28.     Serial.println(F("2.Please insert the SD card!"));
  29.     while(true);
  30.   }
  31.   Serial.println(F("DFPlayer Mini online."));

  32.   myDFPlayer.volume(20);  
  33.   myDFPlayer.play(3);  
  34. }

  35. void loop()
  36. {
  37.   static unsigned long timer = millis();

  38.   if (millis() - timer > 3000) {
  39.     timer = millis();
  40.     myDFPlayer.next();  
  41.   }

  42.   if (myDFPlayer.available()) {
  43.     printDetail(myDFPlayer.readType(), myDFPlayer.read());
  44.   }
  45. }

  46. void printDetail(uint8_t type, int value){
  47.   switch (type) {
  48.     case TimeOut:
  49.       Serial.println(F("Time Out!"));
  50.       break;
  51.     case WrongStack:
  52.       Serial.println(F("Stack Wrong!"));
  53.       break;
  54.     case DFPlayerCardInserted:
  55.       Serial.println(F("Card Inserted!"));
  56.       break;
  57.     case DFPlayerCardRemoved:
  58.       Serial.println(F("Card Removed!"));
  59.       break;
  60.     case DFPlayerCardOnline:
  61.       Serial.println(F("Card Online!"));
  62.       break;
  63.     case DFPlayerPlayFinished:
  64.       Serial.print(F("Number:"));
  65.       Serial.print(value);
  66.       Serial.println(F(" Play Finished!"));
  67.       break;
  68.     case DFPlayerError:
  69.       Serial.print(F("DFPlayerError:"));
  70.       switch (value) {
  71.         case Busy:
  72.           Serial.println(F("Card not found"));
  73.           break;
  74.         case Sleeping:
  75.           Serial.println(F("Sleeping"));
  76.           break;
  77.         case SerialWrongStack:
  78.           Serial.println(F("Get Wrong Stack"));
  79.           break;
  80.         case CheckSumNotMatch:
  81.           Serial.println(F("Check Sum Not Match"));
  82.           break;
  83.         case FileIndexOut:
  84.           Serial.println(F("File Index Out of Bound"));
  85.           break;
  86.         case FileMismatch:
  87.           Serial.println(F("Cannot Find File"));
  88.           break;
  89.         case Advertise:
  90.           Serial.println(F("In Advertise"));
  91.           break;
  92.         default:
  93.           break;
  94.       }
  95.       break;
  96.     default:
  97.       break;
  98.   }
  99. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 16:56:17 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 17:35:05 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 18:22:26 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 19:19:27 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 19:37:37 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-10 07:38:25 | 显示全部楼层
实验八十六: 180度SG90舵机模块(模拟9G)

舵机
是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。一般舵机旋转的角度范围是0 度到180 度。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-10 08:32:56 | 显示全部楼层
SG90舵机
9克小舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。常见于航模,飞机模型,遥控机器人及机械部件当中。在使用中,舵机的配件通常包含一个能把舵机固定到基座上的支架以及可以套在驱动轴上的舵盘,通过舵盘上的孔可以连接其它物体构成传动模型。小舵机自带的3线接口可以通过RJ25适配器与主板相连。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 06:19 , Processed in 0.038886 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表