本篇介绍Arduino模拟输入功能,通过读取电位器输入的电压值来控制LED灯的亮度。
模拟输入引脚是带有ADC(Analog-to-Digital Converter,模数转换器)功能的引脚。它可以将外部输入的模拟信号转换为芯片运算时可以识别的数字信号,从而实现读入模拟值的功能。
Arduino 模拟输入功能有10位精度,即可以将0~5V的电压信号转换为0~1024的整数形式表示。
我们通过使用analogRead() 函数读取电位器输入的电压值,然后通过analogWrite()函数来控制LED灯亮度。
1. 实验材料
Uno R3开发板
配套USB数据线
面包板及配套连接线
1个LED灯
1个220Ω限流电阻
1个电位器
电位器是一个可调的电阻,其原理如下图所示:
电位器原理图
通过旋转旋钮改变2号脚位置,从而改变2号脚到两端的阻值。实验中将1脚和3脚分别接到开发板的5V的GND,再通过模拟输入引脚A0来读取电位器2号脚分得的电压,其范围在0V和5V之间。
2. 实验步骤
根据原理图搭建电路。
直插LED灯正极连接限流电阻,电阻另一端连接开发板第10引脚,LED灯负极接开发板GND。电位器1号脚和3号脚分别连接开发板5V和GND,2号脚连接开发板A0引脚。
实验原理图如下图所示:
实验原理图
实物连接图如下图所示:
实物连接图
新建sketch,拷贝如下代码替换自动生成的代码并进行保存。
/* AnalogRead 通过电位器改变LED灯亮度 */ int ledPin = 10; int readValue = 0; //保存读到的模拟值 int ledValue = 0; //保存LED灯占空比 void setup() { pinMode(ledPin, OUTPUT); //数字口要选择带~号的具有pwm功能的输出口 } void loop() { readValue = analogRead(A0); //读取A0模拟口的数值(0-5V 对应 0-1204取值) ledValue = map(readValue, 0, 1024, 0, 255); //将0到1024之间的数据映射成0到255之间的数据 analogWrite(ledPin, ledValue); //PWM最大取值255 }
连接开发板,设置好对应端口号和开发板类型,进行程序下载。
程序下载
3. 实验现象
通过旋转电位器旋钮,LED灯亮度改变。
作者:TonyCode
链接:https://www.jianshu.com/p/4cdd0b0eb1b5