【Arduino官方教程第一辑】示例程序 3-5 模拟信号的校准
来源:互联网 发布:微信淘宝链接转换 编辑:程序博客网 时间:2024/06/14 23:45
模拟信号的校准
本例向你展示校准传感器的一个技巧:在启动时先读取传感器值5秒钟,然后寻找其最大、最小值。校准后的最大、最小值将在map函数有用。
完成本例所需的硬件设备
- Arduino板或Genuino板
- LED 模拟信号的传感器(光敏电阻就OK)
- 10kΩ电阻
- 220Ω电阻
- 跳线
- 面包板
- 杜邦线/面包板线
电路搭建
模拟信号传感器(例如:电位器/光线传感器等)连接到A2,LED连接到9号引脚。
用220Ω限流电阻串联LED到9号引脚。将光敏电阻一脚连接到5V,另一个脚连接到A0,并加一个10kΩ下拉电阻。
原理图
例程代码
在setup前,你应像这样定义初始的最大最小值:
int sensorMin = 1023; // 最小值int sensorMax = 0; // 最大值
这种方式可能看起来有点初级,先学习下吧。
最开始,你设置一个最小值初始值。如果读取到任何小于它的值,就用这个更小的数字更新最小值。与此类似,最开始,你设置一个最大值初始值,如果读取到任何大它的值,就用这个更大的数字更新最大值。像这样写:
// 用最初五秒进行校准 while (millis() < 5000) { sensorValue = analogRead(sensorPin); // 记录传感器最大值 if (sensorValue > sensorMax) { sensorMax = sensorValue; } // 记录传感器最小值 if (sensorValue < sensorMin) { sensorMin = sensorValue; } }
通过这种方式,传感器的值就能够被成功映射到一个范围(因为最大、最小值确定了):
// 将校准结果应用到传感器读取中sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);
下面是整个代码:
/* 模拟信号的校准 展示校准传感器的一种方式。在程序执行前五秒时会找到传感器值的最大、最小值。 这种方式可能看起来有点初级,先学习下吧。 最开始你设置一个最大值和最小值的初始值,然后在执行过程中寻找更小的值和更大的值并且不断更新最开始设置的值。 电路搭建: * 模拟信号传感器(光敏电阻就可以)连接到A0 * LED连接9号引脚到GND 代码是公开的. */// 常量:const int sensorPin = A0; // 传感器引脚const int ledPin = 9; // LED引脚// 变量:int sensorValue = 0; // 传感器值int sensorMin = 1023; // 最小值int sensorMax = 0; // 最大值void setup() { // 打开LED以表示校准开始: pinMode(13, OUTPUT); digitalWrite(13, HIGH); // 在最初五秒进行校准 while (millis() < 5000) { sensorValue = analogRead(sensorPin); // 记录最大值 if (sensorValue > sensorMax) { sensorMax = sensorValue; } // 记录最小值 if (sensorValue < sensorMin) { sensorMin = sensorValue; } } // 关闭LED表示校准完成 digitalWrite(13, LOW);}void loop() { // 读取传感器: sensorValue = analogRead(sensorPin); // 将校准后的最大最小值用进去: sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); // 防止sensorValue超过范围 sensorValue = constrain(sensorValue, 0, 255); // 用校准后的值来给LED调光: analogWrite(ledPin, sensorValue);}
相关资料
while()
millis()
constrain()
map()
If
模拟信号与串口: 从模拟信号输入引脚读取一个值,然后用这个值控制LED小灯
模拟信号输入: 使用电位器来控制LED的闪烁。
模拟信号输出[Mega]: 使用Arduino Mega板让12个LED一个接一个亮度逐渐减弱。
模拟信号的校准: 设置传感器输出模拟信号的最大、最小值来达到预期效果。
LED亮度渐隐:使用脉宽引脚(PWM pin)来让一个LED的亮度渐弱。
信号平滑:让多个模拟引脚的输入值变得更加均匀平滑。
更新进程
日期 日志 译者 2016年5月10日 创建并翻译文档 唐家勋
译者:唐家勋
邮箱:mrsteventang@gmail.com
QQ:649196486
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
0 0
- 【Arduino官方教程第一辑】示例程序 3-5 模拟信号的校准
- 【Arduino官方教程第一辑】示例程序 3-3 模拟信号输出[Mega]
- 【Arduino官方教程第一辑】示例程序 3-1 模拟信号与串口
- 【Arduino官方教程第一辑】示例程序 3-2 模拟信号输入
- 【Arduino官方教程第一辑】示例程序 1-1 读取模拟信号、串口操作
- 【Arduino官方教程第一辑】示例程序 3-7 信号平滑
- 【Arduino官方教程第一辑】示例程序 5-1 数组
- 【Arduino官方教程第一辑】示例程序 2-5 按键状态改变的探测
- 【Arduino官方教程第一辑】示例程序 1-2 Arduino工程的最小单元
- 【Arduino官方教程第一辑】示例程序 5-3 If条件判断
- 【Arduino官方教程第一辑】示例程序-目录
- 【Arduino官方教程第一辑】示例程序 2-2 按键
- 【Arduino官方教程第一辑】示例程序 4-2 调光器
- 【Arduino官方教程第一辑】示例程序 2-6 音乐键盘-tone函数的运用
- 【Arduino官方教程第一辑】示例程序 2-9 制作你的特雷门琴
- 【Arduino官方教程第一辑】示例程序 5-5 Switch和Case条件语句2
- 【Arduino官方教程第一辑】示例程序 1-5 LED亮度渐隐
- 【Arduino官方教程第一辑】示例程序 4-5 多串口[Mega]
- 一起talk C栗子吧(第一百四十九回:C语言实例--socket通信接口一)
- Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?
- 北京实习求职的那些事
- HDU 3746 (KMP)
- java数组小记
- 【Arduino官方教程第一辑】示例程序 3-5 模拟信号的校准
- JAVA——泛型限定(占位符)
- 《Java编程思想》学习笔记(序言):从机电男到程序猿
- 关于 == 和 equals
- Appium学习-IOS初窥
- java 内部类
- MIME类型大全
- Nodejs(八)
- [乐意黎原创] PHP的增加时间