问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Arduino模拟输入基础教程:从电位器到LED亮度控制

创作时间:
作者:
@小白创作中心

Arduino模拟输入基础教程:从电位器到LED亮度控制

引用
CSDN
1.
https://blog.csdn.net/qq_44870829/article/details/140893442

Arduino的模拟输入功能是其核心特性之一,通过模拟输入,Arduino可以读取各种传感器的信号,实现对物理世界的感知。本文将详细介绍Arduino如何处理模拟输入信号,特别是通过电位器来控制LED亮度的原理和方法。

1-28 模拟输入1 - 学用电位器

电位器

电位器是一种可变电阻器,通过旋转旋钮来改变电阻值。其基本原理与中学物理中学习的变阻器相似。电位器通常有三个引脚,可以将其等效为两个串联的电阻。当旋转旋钮时,两个电阻的阻值会同时发生变化,但它们的总和保持不变。

例如,一个1000欧姆的电位器,在左旋到极限时,R(1-2)为0欧姆,R(2-3)为1000欧姆;在右旋到极限时,R(1-2)为1000欧姆,R(2-3)为0欧姆。这种特性使得电位器非常适合用于分压电路。

电位器实际应用

电位器最常用的应用是在分压电路中,其中2号引脚的电压可以在0V到5V之间变化,这正是Arduino模拟输入引脚所期望的信号范围。

Arduino如何接电位器

在Arduino项目中,通常将电位器的1号引脚接地(GND),3号引脚接+5V电源,2号引脚连接到Arduino的模拟输入引脚(如A0)。这种接法使得当旋钮向右旋转时,2号引脚的电压增大;向左旋转时,电压减小。

1-29 模拟输入2-analogRead

演示效果

将电位器连接到Arduino后,可以通过Arduino的串口监视器观察到A0引脚的读数变化。当旋钮向右旋转时,读数从0增加到1023;向左旋转时,读数从1023减小到0。

示例程序

Arduino使用analogRead()函数来读取模拟输入引脚的值。这个函数返回一个0到1023之间的整数,对应于0V到5V的电压范围。

干扰问题

在实际使用中,由于环境干扰,读数可能会出现微小波动。例如,当旋钮调到最大或最小位置时,读数可能在1023和1022之间或0和1之间跳变。这种现象是正常的,因为Arduino的模拟输入分辨率很高,即使是微小的电压变化也会反映在读数上。

AnalogRead()函数详解

Arduino的模拟输入引脚实际上是一个10位的模数转换器(ADC),可以将0V到5V的模拟信号转换为0到1023之间的数字信号。每个数字变化代表大约4.88mV的电压变化。analogRead()函数就是用来读取这个转换后的数字值。

1-30 模拟输入3-电位器控制LED亮度

实验演示

通过将电位器的输出连接到Arduino的模拟输入引脚,可以控制连接到PWM引脚的LED亮度。当旋钮向右旋转时,LED亮度增加;向左旋转时,亮度减小。

示例程序

要实现LED亮度控制,需要使用analogWrite()函数。这个函数可以产生PWM信号,控制LED的亮度。但是,analogWrite()函数的输入范围是0到255,而analogRead()函数的输出范围是0到1023,因此需要使用map()函数进行比例转换。

Map()函数

map()函数用于将一个数值从一个范围映射到另一个范围。在这个例子中,需要将0到1023的范围映射到0到255的范围。

回顾

  1. 电位器产生0V到5V的模拟信号
  2. Arduino使用analogRead()函数将模拟信号读取为0到1023之间的数字信号
  3. 使用map()函数将0到1023的范围映射到0到255的范围
  4. 使用analogWrite()函数产生PWM信号控制LED亮度

需要注意的是,Arduino UNO的模拟输出信号是PWM信号,而其他开发板可能使用不同的信号类型。因此,在使用其他开发板时,需要查阅相关文档了解具体的模拟输出特性。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号