本篇介绍Arduino通过读取电位器输入的电压值来控制模拟输入功能LED灯的亮度。
带有模拟输入引脚ADC(Analog-to-Digital Converter,模数转换器)功能的引脚。它可以将外部输入的模拟信号转换为芯片操作中可识别的数字信号,从而读取模拟值。
Arduino 模拟输入功能具有10位精度,即0~5V将电压信号转换为0~1024的整数表示。
我们使用它analogRead() 函数读取电位器输入的电压值,然后通过analogWrite()函数来控制LED灯亮度。
1. 实验材料
其原理如下图所示:
通过旋转旋钮改变2号脚的位置,从而改变2号脚到两端的电阻值。在实验中,将1脚和3脚分别连接到开发板的5脚V的GND,然后通过模拟输入引脚A读取电位器2号脚的电压,其范围为0V和5V之间。
2. 实验步骤
-
根据原理图构建电路。
直插LED灯正极连接限流电阻,电阻另一端连接开发板第10引脚,LED灯负极端开发板GND。电位脚和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亮度变化。
4. 函数介绍
- 描述:读取指定模拟引脚的值。
- 函数原型:
- 参数:模拟输入引脚。
- 返回值:到1024之间的整数。
- 描述:将数据从一个范围映射到另一个范围。
- 函数原型:
- 参数:
- value: 要映射的数据
- fromLow: 当前范围的下限值。
- formHigh: 当前范围的上限值。
- toLow: 目标范围的下限值。
- toHigh: 目标范围的上限值。
- 返回值:重新映射后的数据。
5. 实验分析
程序中通过analogRead()函数来读取模拟输入值,这个输入值的范围是0到1024之间,然后通过analogWrite()函数来改变LED灯占空比,占空比的范围是0到255之间。通过使用map()函数将范围做了重新映射。
更多内容,欢迎关注我的公众号。 微信扫一扫下方二维码即可关注: