【Arduino官方教程第一辑】示例程序 3-2 模拟信号输入
来源:互联网 发布:windows系统编程百度云 编辑:程序博客网 时间:2024/05/20 18:15
模拟信号输入
本例中,我们根据电位器(或用光敏电阻替代)的阻值变化来改变LED闪烁频率。电阻的模拟信号值将根据电压变化。
完成本例所需的硬件设备
- Arduino板或Genuino板
- 电位器 或 10kΩ光敏电阻+10kΩ电阻
- 红色220Ω LED灯(或者板载LED)
电路连接
电位器接法
连接3根线到Arduino/Genuino板。电位器一个外侧的引脚连接到GND,另一个外侧的引脚连接到+5V。A0口连接到电位器中间引脚。
对于本例来说,用13号板载LED也可。如要用外加LED,将LED长脚(阳极)用220Ω电阻连接到13号引脚。将LED短脚(阴极)连接到GND引脚。
译者注:原文是“连接到13号引脚旁边的引脚”。
光敏电阻接法
用光敏电阻的电路使用分压器来保证模拟信号在转换电压时有高阻抗。因为模拟输入引脚几乎不会消耗任何电流,因此根据欧姆定律,不管电阻阻值为多少,连接到5V的那一端总是5V。为了根据光敏电阻阻值变化改变电压,电阻分压器必不可少。电路中用一个可变电阻和一个电位器来组成分压器,分压器”划片”在两电阻的中间。
测量的电压应根据以下公式可算得:
Vout=Vin*(R2/(R1+R2))
Vin为5V,R2为10kΩ,R1为光敏电阻。光敏电阻在黑暗时为1mΩ,白天(10 流明 )时10kΩ,日光下/明亮灯(超过100 流明 )管下小于1kΩ)。
原理图
电位器接法
光敏电阻接法
例程代码
在代码开头,sensorPin变量被设置为A0,A0口连接着电位器。LED引脚被设置为13。你也可创建另一个sensorValue变量来存储从传感器读出来的值。
analogRead()函数将0-5v的电压值映射成为0-1023。这个操作通过板子上的数模转换电路(ADC)完成。
通过转动电位器的轴,你能改变电位器划片两侧的电阻(整个电位器是由其中间引脚分开的滑动变阻器)。这样一来就能改变中间引脚上的电压,从而让你在analogRead()读出不同的值。当电位器转轴被朝一个方向转到底时,中间引脚和连接到GND引脚之间的电阻为0。analogRead() 此时应返回0。当电位器转轴被朝另一个方向转到底时,中间引脚和连接到5v引脚之间的电阻为0。中间引脚连接到+5v,analogRead() 返回1023。在中间时,analogRead() 根据A0口上的电压按照比例返回0-1023的值。
返回值被存入sensorValue,sensorValue用来设置delay()的毫秒数,即为闪烁的间隔时间。sensorValue值越小,闪烁的间隔时间越小。sensorValue的值是在闪烁的开头读取的,因此LED打开和关闭之间的时间也总是相等的。
/* Analog Input 本例向你展示在A0口读取输出模拟信号的传感器的值,并且根据这个值让13号引脚的LED闪烁。LED的闪烁周期根据analogRead()返回值确定。 电路搭建: * 电位器中间的引脚连接到A0,两侧分别连接+5V和GND * LED阳极(长脚) 连接到13号引脚 * LED负极(短脚)连接到GND * 小贴士:因为大多数板有板载LED连接到13号引脚,因此外加的LED是可选的。 代码是公开的。 */int sensorPin = A0; // 设置电位器的引脚int ledPin = 13; // 设置LED引脚int sensorValue = 0; // 传感器值的存储变量void setup() { // 声明ledPin为输出模式: pinMode(ledPin, OUTPUT);}void loop() { // 从传感器读值: sensorValue = analogRead(sensorPin); // 打开LED digitalWrite(ledPin, HIGH); // 暂停程序sensorValue毫秒: delay(sensorValue); // 将LED关闭: digitalWrite(ledPin, LOW); // 暂停程序sensorValue毫秒: delay(sensorValue);}
相关资料
pinMode()
analogRead()
digitalWrite()
delay()
模拟信号与串口: 从模拟信号输入引脚读取一个值,然后用这个值控制LED小灯
模拟信号输入: 使用电位器来控制LED的闪烁。
模拟信号输出[Mega]: 使用Arduino Mega板让12个LED一个接一个亮度逐渐减弱。
模拟信号的校准: 设置传感器输出模拟信号的最大、最小值来达到预期效果。
LED亮度渐隐:使用脉宽引脚(PWM pin)来让一个LED的亮度渐弱。
信号平滑:让多个模拟引脚的输入值变得更加均匀平滑。
更新进程
日期 日志 译者 2016年5月9日 创建并翻译文档 唐家勋
译者:唐家勋
邮箱:mrsteventang@gmail.com
QQ:649196486
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
- 【Arduino官方教程第一辑】示例程序 3-2 模拟信号输入
- 【Arduino官方教程第一辑】示例程序 3-3 模拟信号输出[Mega]
- 【Arduino官方教程第一辑】示例程序 3-1 模拟信号与串口
- 【Arduino官方教程第一辑】示例程序 3-5 模拟信号的校准
- 【Arduino官方教程第一辑】示例程序 1-1 读取模拟信号、串口操作
- 【Arduino官方教程第一辑】示例程序 3-7 信号平滑
- 【Arduino官方教程第一辑】示例程序 2-2 按键
- 【Arduino官方教程第一辑】示例程序 4-2 调光器
- 【Arduino官方教程第一辑】示例程序 2-3 按键去抖
- 【Arduino官方教程第一辑】示例程序 1-2 Arduino工程的最小单元
- 【Arduino官方教程第一辑】示例程序-目录
- 【Arduino官方教程第一辑】示例程序 5-1 数组
- 【Arduino官方教程第一辑】示例程序 2-8 曲调2
- 【Arduino官方教程第一辑】示例程序 1-3 点亮LED
- 【Arduino官方教程第一辑】示例程序 3-6 LED亮度渐隐
- 【Arduino官方教程第一辑】示例程序 4-3 数据图表
- 【Arduino官方教程第一辑】示例程序 5-3 If条件判断
- 【Arduino官方教程第一辑】示例程序 6-3 Memsic2125加速度计
- 对于160个CrackMe之23的分析
- 心灵鸡汤之20160506学会say No!
- WebView methods on same thread error
- 二分查找及其变体
- Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Li
- 【Arduino官方教程第一辑】示例程序 3-2 模拟信号输入
- 《C++精英内参之程序员高效指南》-1如何管理你的任务
- 机器学习、计算机视觉书籍推荐
- 动态对象创建(new/delete & malloc/free)
- 火车头采集器 页面图片等信息采集
- 我写的js俄罗斯方块,求助一下,重新开始游戏如何解决的啊,现在用的是刷新
- PHP自学no00007数据类型字符串型之界定符
- python实现HTTP 请求
- Oracle 分页查询模板