这篇文章来源于DevicePlus.com英语网站的翻译稿。
本文最初发布在deviceplus.jp网站上,而后被翻译成英语。
目录前言
将模拟值转换为数字值
Arduino的模拟输入
可以调节电压的电位器
通过电位器实现模拟输入
总结
相关文章
使用数字输入,可以将5V读取为“HIGH”,将0V读取为“LOW”。可以通过状态来判断开关是否已导通。但是,实际上电压不只是5V和0V,而是各种各样。例如,一节AA电池的电压为1.5V,日本家用插座的电压为100V。
Arduino支持模拟输入,以能够读取这些不同的电压。利用模拟输入功能,能够读取逐渐变化的电子元器件的状态。例如,使用“电位器”可以调节亮度或音量,也可以从温度传感器获取当前温度。
本文是本系列文章的最后一篇,将介绍使用“电位器”进行模拟输入的方法。
将模拟值转换为数字值实际的电压不是像1V或5V这样的精确值,而是像5.01342…V这样的无理数,其小数点后的数字是无限不循环的。这样的值是无法通过计算机直接处理的。因此,在电子电路中,会使用一种称为“AD转换器”的机制将模拟值转换为数字值,以便它们可以由计算机处理。Arduino作为标配搭载了AD转换器,可以读取模拟电压值并将其转换为数字值。
AD转换器会将对象电压等分。对于Arduino Uno而言,可以读取0-5V范围内的电压,并会将这些0-5V的电压值分成1023等份。AD转换器会将读取到的模拟电压值转换为最接近等分值的值。例如,如果电压为3V,则“614”是最接近的值。这个值将发送给Arduino使用。
读取到的多达1023个的整数值将会用于程序处理。但是,输入值不是电压值。如果想知道电压值,可以进行如下计算:
例如,如果来自AD转换器的值为“614”,则除以1023再乘以5即可得到约3V。
Arduino的模拟输入要使用Arduino Uno的数字输入功能时,有从A0到A5的6个引脚可用。通过将电子元器件连接到这些引脚上,即可读取施加了多少电压。但是,引脚A4和A5也用于称为“I2C”的数字通信。请注意,在连接传感器或显示器等使用I2C数字通信的电子元器件时,这些引脚不能用于模拟输入。
可以调节电压的电位器“电位器”是一个可以用来调节音量或照明亮度的电子部件。在电位器内部配有电阻元件,并有在电阻元件上移动的引脚。通过移动引脚可以改变电阻。
电位器通常会配有三个引脚。左右两侧的引脚安装在电阻器的两端。中间的引脚可以在电阻元件上移动。如果将中间引脚向右移动,则左侧和中间引脚之间的电阻会增加。反之,如果将中间引脚向左移动,则左侧和中间引脚之间的电阻会减小。
在上图中,电阻元件是线性的,但在旋转式的电位器中,内部电阻元件是圆形的。尽管形状不同,但它们的工作原理基本相同。
Arduino的模拟输入使用电压的变化进行输入。但是,由于电位器的电阻会发生变化,因此无法通过将其直接连接到Arduino来读取电位器的变化情况。因此,需要将电阻的变化转换为电压的变化。将电源和GND分别连接到电阻的左右引脚。这样,中间引脚的电压将根据引脚的位置发生变化。例如,假设将GND连接到左侧引脚,将电源(5V)连接到右侧引脚,当中间引脚向右移动,电压会升高,向左移动时,电压会降低。此外,由于左端为0V,右端为5V,因此可以使电压值在0V到5V的范围内变化。
只要将这个中间引脚与Arduino的模拟输入引脚相连接,就可以通过操作电位器来更改输入。
通过电位器实现模拟输入现在,我们尝试使用电位器进行模拟输入。需要准备好以下电子部件:
电位器
电位器会记录可调范围内的电阻值。作为Arduino输入使用时,最好使用10kΩ的电位器。另外,如果电位器的旋转轴配有旋钮会更容易操作。
鳄鱼夹线
用于连接电位器,使用时用鳄鱼夹夹住电位器的引脚。点击链接可以看到我们使用的是2条红线和2条黑线配套销售的产品。
所需部件准备好以后,按如下方式连接。由于电位器无法插入面包板,因此需要使用鳄鱼夹线将其直接连接到Arduino。此时需要注意的是,要确保鳄鱼夹的金属部分不要接触相邻的夹子部分。
编写以下程序:
要确认模拟输入引脚的连接状态时,请在第11行的“analogRead()”中指定对象引脚。这样,即可使用0到1023的值输入引脚电压值。如果想知道电压,请按第13行所示进行计算并将计算值转换为电压值。
将程序发送给Arduino并显示串行监视器。
您可以看到,经AD转换器转换为数字的值显示在“Value:”之后,经计算并转换为电压的值显示在“Volt:”之后,当转动电位器时,值也随之变化。
在本系列连载文章中,我们介绍了Arduino基础的用法。欢迎您根据这些内容来尝试制作各种电子作品或者让一些电子部件动起来。非常感谢您连续关注这个长达半年的连载系列,谢谢!
相关文章想了解更多有关Arduino的基础知识吗?欢迎查看相关的文章:
Arduino基础: 调节LED的亮度
Arduino基础: 控制电机
Arduino基础: 读取开关状态
Arduino基础: 通过数字输出控制LED照明
Arduino基础: Arduino的前期准备