【Arduino官方教程第一辑】示例程序 3-1 模拟信号与串口
来源:互联网 发布:yum强制重新安装 编辑:程序博客网 时间:2024/06/14 14:18
模拟信号与串口
本例向你展示如何从模拟信号输入引脚读模拟信号值、将读出的值映射到0-255的范围,并根据结果进行PWM来让LED渐暗/渐亮以及打印结果到Arduino IDE上的串口监视器。
完成本例所需的硬件设备
- Arduino板Genuino板
- 电位器
- 红色LED
- 220Ω电阻
- 杜邦线
电路连接
电位器一个引脚连接到5V,中间引脚连接到A0口,最后一个引脚连接到GND。
接下来,在9号引脚连一个220Ω限流电阻并串接一个LED。(LED长脚(阳极)应连接到电阻,短脚(阴极)连接到GND)。
原理图
例程代码
在下列代码中。setup函数只做两件事情:第一是定义了两个引脚(A0给电位器,9号引脚给LED),以及两个变量(sensorValue和outputValue)。第二是打开串口通信。
接下来,在主循环中,sensorValue被用来存储来自电位器的原始模拟信号值。Arduino有一个返回值为0到1023的analogRead函数,以及一个参数为0-255的analogWrite函数。为了让来自电位器的模拟信号值能正确操作LED,我们需要将值的范围映射成0-255。
为了完成转换,用map()函数即可:
outputValue = map(sensorValue, 0, 1023, 0, 255);
outputValue时刻与电位器映射后的值保持相等。map()函数有五个参数,依次是:要映射的原始值,原始值最小值,原始值最大值,映射后的最小值,映射后的最大值。这样,传感器返回的数据就能够从其原来的0-1023被映射为0-255了。
接下来,新映射的传感器数据就能会被输出到analogOutPin来使LED在电位器转动时渐亮/渐暗。最终,原始值和被映射到0-255的传感器值将被输出到Arduino IDE中。
/* 模拟信号与串口 读取模拟输入引脚的值,并且将它映射到0-255。然后使用映射后的值来为输出引脚设定脉宽(通过PWM)。并将结果输出到串口监视器。电路搭建: * 电位器中间脚连接到A0。两边的引脚分别连接到+5V和GND. * LED连接数字引脚9到GND 示例代码公开 */// 常量的声明定义,用作引脚定义const int analogInPin = A0; // 电位器连接到的模拟输入引脚const int analogOutPin = 9; // LED连接的输出引脚//变量的声明定义int sensorValue = 0; // 从电位器读到的值int outputValue = 0; // PWM值void setup() { // 初始化串口(波特率9600): Serial.begin(9600);}void loop() { // 读取模拟输入值: sensorValue = analogRead(analogInPin); // 映射模拟输入值到0-255: outputValue = map(sensorValue, 0, 1023, 0, 255); // 改变模拟输出值: analogWrite(analogOutPin, outputValue); // 结果输出到串口监视器: Serial.print("sensor = "); Serial.print(sensorValue); Serial.print("\t output = "); Serial.println(outputValue); // 等两毫秒以让数模转换器完成工作: delay(2);}
相关资料:
map()
analogRead()
analogWrite()
serial()
模拟信号与串口: 从模拟信号输入引脚读取一个值,然后用这个值控制LED小灯
模拟信号输入: 使用电位器来控制LED的闪烁。
模拟信号输出[Mega]: 使用Arduino Mega板让12个LED一个接一个亮度逐渐减弱。
模拟信号的校准: 设置传感器输出模拟信号的最大、最小值来达到预期效果。
LED亮度渐隐:使用脉宽引脚(PWM pin)来让一个LED的亮度渐弱。
信号平滑:让多个模拟引脚的输入值变得更加均匀平滑。
更新进程
日期 日志 译者 2016年5月5日 创建并翻译文档 唐家勋
译者:唐家勋
邮箱:mrsteventang@gmail.com
QQ:649196486
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
- 【Arduino官方教程第一辑】示例程序 3-1 模拟信号与串口
- 【Arduino官方教程第一辑】示例程序 1-1 读取模拟信号、串口操作
- 【Arduino官方教程第一辑】示例程序 3-3 模拟信号输出[Mega]
- 【Arduino官方教程第一辑】示例程序 3-2 模拟信号输入
- 【Arduino官方教程第一辑】示例程序 3-5 模拟信号的校准
- 【Arduino官方教程第一辑】示例程序 3-7 信号平滑
- 【Arduino官方教程第一辑】示例程序 5-1 数组
- 【Arduino官方教程第一辑】示例程序 4-5 多串口[Mega]
- 【Arduino官方教程第一辑】示例程序 4-6 串口控制LED
- 【Arduino官方教程第一辑】示例程序 4-8 串口双向调用 (握手连接)
- 【Arduino官方教程第一辑】示例程序 4-9 串口双向调用(使用ASCII字符串)
- 【Arduino官方教程第一辑】示例程序 4-10 串口事件
- 【Arduino官方教程第一辑】示例程序 1-3 点亮LED
- 【Arduino官方教程第一辑】示例程序 1-2 Arduino工程的最小单元
- 【Arduino官方教程第一辑】示例程序-目录
- 【Arduino官方教程第一辑】示例程序 2-2 按键
- 【Arduino官方教程第一辑】示例程序 4-2 调光器
- 【Arduino官方教程第一辑】示例程序 2-3 按键去抖
- iOS性能忧化
- C++ 在.h文件中声明,在.cpp文件中定义 模板函数和模板类
- Struts2的过滤器和拦截器
- A - Round House
- Elasticsearch安装使用ik中文分词
- 【Arduino官方教程第一辑】示例程序 3-1 模拟信号与串口
- 提升Java性能的基本方法
- 使用iText为PDF加图片水印
- Python 阅读书目推荐
- 【USACO题库】2.2.1 Preface Numbering序言页码(数学+枚举)
- Winock2网络编程服务器端
- segmentcontroler设置被选中状态下字体的颜色 大小
- 如何过渡至 Python 3
- C++ Primer 第五版 练习 3.20