【Arduino官方教程第一辑】示例程序 6-2 用压电元件检测振动
2016-06-22 14:11
399 查看
用压电元件检测振动
本例向你展示如何使用一个压电元件来检测震动。(压电元件有很多种应用,蜂鸣器就是一种,但是这里不是”正向”使用压电元件,而是利用其电路特性“逆向”使用。即原来是通电产生振动,振动发声,现在是振动产生电流,通过电流判断振动。)本例向你展示如何使用压电元件来进行振动的检测,你可以用本例的方法来对敲门、敲桌子、或者敲其他固体表面的振动进行识别。当压电元件因为声波、机械扰动或振动产生形变时,会产生压差。而相反,如果你给压电元件加电压,它就会产生振动。由此可知,压电元件既可以由电产生振动,又可以由振动生电。
本例不断使用analogRead() 读取压电扬声器两端电压,并且将探测到的电压(0-5V)通过数模转换技术 (ADC)映射成为数字(0-1023)。
如果压电元件的输出超过了一定极限值(表明振动达到了一定强度)你的板子就会通过串口输出“检测到振动!”这一字符串到电脑。
你需要打开串口监视器来看到效果。
完成本例所需的硬件设备
Arduino板或Genuino板压电元件
1mΩ电阻
用作敲击的固体表面
连接线
电路连接
压电元件是有极性的,就是说电势总是一侧高一侧低,如果加上外电路,那么电流总是从一侧流向另一侧。
将黑色线(通常电势较低的一级)连接到GND。将红色线(通常电势较高的一级)连接到A0口。还要并联一个1mΩ的电阻,以保证过大电流不会损坏A0口。
你可以去掉压电元件的塑料外壳。这样它能够更好地接收到外部的振动。请将压电元件粘在被测表面,并且适当用力按压、敲击以让它更好地检测到振动。
原理图
例程代码
在下列代码中,从压电元件读出的值会和你设定的极限值做比较。你可以尝试增加/减少极限值来调整对振动的敏感度。/* 用压电元件检测振动 本例通过读取压电元件来对敲击进行检测。代码将读取压电元件的数值并且将它与极限值进行比较。 如果结果大于极限值,就会输出"检测到振动"到串口监视器。13号引脚的板载LED也会随之点亮。 电路搭建: * 压电元件阳极(+)连接A0 * 压电元件阴极(-)连接GND * 1mΩ电阻连接A0和GND 代码公开 */ // 常量: const int ledPin = 13; // 13号引脚连接LED const int knockSensor = A0; // 压电元件 const int threshold = 100; // 极限值,用于检测是否有振动 // 可变量: int sensorReading = 0; // 存储值的变量 int ledState = LOW; // 存储LED状态量 void setup() { pinMode(ledPin, OUTPUT); // 将ledPin声明为OUTPUT模式 Serial.begin(9600); // 串口 } void loop() { // 读取传感器的值并且存入sensorReading变量: sensorReading = analogRead(knockSensor); // 如果sensorReading超过了极限值: if (sensorReading >= threshold) { // 改变ledPin的状态: ledState = !ledState; // 根据状态点亮/关闭: digitalWrite(ledPin, ledState); // 输出消息"检测到振动!" 并且换行 Serial.println("检测到振动!"); } delay(100); // 延迟100毫秒保持串口稳定性 }
相关资料
pinMode()analogRead()
if()
serial.begin()
serial.print()
ADXL3xx: 读取ADXL3xx加速度计。
Knock: 用压电元件来检测碰撞。
Memsic2125: 两轴加速度计。
Ping:使用超声波来检测物体的远近。
原文链接
更新进程
日期 | 日志 | 译者 |
---|---|---|
2016年6月22日 | 创建并翻译文档 | Steven |
邮箱:gammapi@qq.com
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
相关文章推荐
- 100 个最佳 Ubuntu 应用(中)
- 在 AppImage、Flathub 和 Snapcraft 平台上搜索 Linux 应用
- 24 个必备的 Linux 应用程序
- 注册表趣味应用小集
- 远程控制技术的应用
- 路由器访问列表的应用
- xDSL技术及其应用
- 基于XML的桌面应用
- SQL Server 2008 R2 应用及多服务器管理
- Node.js 应用跑得更快 10 个技巧
- ExtJS 2.0实用简明教程之应用ExtJS
- 全面解析Ajax综合应用(全)
- JSP应用的安全问题
- 前端开发必须知道的JS之闭包及应用
- Android编程实现应用自动更新、下载、安装的方法
- Geohash的原理、算法和具体应用探究
- PHP开发中AJAX技术的简单应用
- PHP答题类应用接口实例
- ASP.NET过滤器的应用方法介绍
- Android编程实现将应用强制安装到手机内存的方法