【Mind+】Arduino Uno入门 项目九 噪音计

2019-06-174.8万
AI 快速预览详细 收起
本项目介绍了如何使用Arduino Uno、模拟声音传感器和舵机制作一个噪音计。通过设置引脚伺服舵机和读取引脚声音强度,结合映射功能,可以将声音强度转换为舵机的角度。项目分为两个任务:第一个任务是根据噪音大小使舵机转动到不同位置;第二个任务是探测一段时间内噪音的最大值,并通过按键控制工作状态。该项目适合初学者,特别是对STEM教育感兴趣的用户。
【Mind+】Arduino Uno入门 项目九 噪音计
-DFRobot官方出品

   
  生活中我们可以看到一些仪器上指针——时钟、电压表、电流表、汽车上的转速表……Arduino 套件中也有一个元件可以模拟指针,它就是舵机。
【Mind+】Arduino Uno入门 项目九 噪音计图1

  • 舵机是由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统
  • 通过发送信号,指定输出轴旋转角度
  • 套件中舵机最大旋转角度:180°

      这是 Mind+ 软件中控制舵机的程序块:
【Mind+】Arduino Uno入门 项目九 噪音计图2
*学习目标:
1. 元件
      舵机,模拟声音传感器,按钮
2Mind+ 程序模块
      设置引脚伺服舵机
      读取引脚声音强度
      映射
      变量
      串口输出
3程序设计
      顺序结构
      循环结构
      条件判断

任务 1——制作一个噪音计

1. 实现功能
      根据噪音的大小,使舵机转动到不同位置。

2. 硬件连接
      舵机—9;模拟声音传感器—A1。注意插线时的颜色对应(黄色对应绿色)

3. 程序编写
【Mind+】Arduino Uno入门 项目九 噪音计图3

任务 2——探测最大噪音

1. 实现功能
      探测一段时间内噪音的最大值。用户按下按键后开始工作,只记录最大值。再次按下按键停止记录,并回到初始位置。
2. 思路解析
【Mind+】Arduino Uno入门 项目九 噪音计图4
      如何使按键随时改变工作状态——中断函数 。

      在这个程序中,我们主要需要用一个 state 变量来判断工作状态,若 state 值为 1(即开)各部分按要求工作,若 state 值为 0(即关)则所有部分归零;其次,在工作过程中我们还需随时检测按键有没有被按下以改变 state 的值;噪音计和舵机的工作状态与按键状态是两个可以独立运行的部分(没有什么明显的逻辑关系语句可以把两个部分建立联系)。

      因此,我们考虑用中断函数,即在工作或停止工作过程中随时检测按键状态(在用按键控制复杂的元件的开关状态时经常使用中断函数)。

3. 硬件连接

      按钮模块—2;舵机—9;模拟声音传感器—A1。注意插线时的颜色对应。

4. 程序编写
【Mind+】Arduino Uno入门 项目九 噪音计图5


创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(8)
guiyuan
guiyuan
映射函数那里少了获取声音模拟值,跟本页中之前的代码一样,应该是将声音的模拟值进行映射转换。
三春牛-创客
三春牛-创客
学习了。
三春牛-创客
三春牛-创客
不错!
artisan
artisan
请问中断函数是自己写的还是用的封装的模块。
EVE
EVE
作者
回复artisan
中断是用的软件封装好的模块
gada888
gada888
流程图设计的不错
雅客西
雅客西
请问中断函数,我怎么找不到
1323682129
1323682129回复雅客西
在扩展中的功能模块中
YONG
YONG
映射那里是不是漏了什么?
Rae
Rae
太好了
- 没有更多了 -