在Arduino中,控制模拟I/O和控制数字I/O一样简单,因为就像控制旋转按钮开关一样。我们可以通过旋转开关调节照明亮度,同样,控制模拟I/O信号可以调节电压大小。像这样能控制模拟I/O信号的引脚成为“模拟信号引脚”。
数字I/O引脚可以在一个引脚里控制输入与输出,但模拟输入引脚和输出引脚时彼此独立的。首先,对于Arduino UNO,在表示ANALOG IN的地方可以看到写着A0~A5的引脚,这些引脚就是模拟输入引脚。通过模拟输入引脚,可以查看电压变化。
数字I/O中的输入只能通过LOW或HIGH确定电流是断开还是连接状态,而模拟I/O中的输入则能确定具体流入了0V~5V中的多少电压,比如判断流入的是2V还是3V。和数字I/O引脚一样,模拟I/O引脚也标有名称,为A0~A5。在Arduino中,A0~A5的引脚已声明为常数,编辑代码时可直接使用这些名称控制模拟输入引脚。
仔细看Arduino UNO的数字I/O引脚位置,可以法子按标有波浪线(~)的引脚,这些便是模拟输出引脚,可以有此控制模拟输出。模拟输入是为了确定0V~5V需要的大小。模拟I/O引脚和数字I/O引脚一样,刚开始不需要设置用途。只有想使用模拟输出是,才需要确定数字I/O引脚旁是否有波浪线符号。
输出模拟信号
//设置第9号引脚的电压为0V。
analogWrit(9,0);
//设置第9号引脚的电压为5V。
analogWrit(9,255);
//设置第9号引脚的电压为5V。
analogWrit(9127);
输出模拟信号时,使用analogWrite函数。函数名由“模拟”(analog)和“写”两个单词组成,意为“写模拟”。analogWrite函数需要两个参数,第一个是输出模拟信号引脚编号,注意,必须是数字I/O引脚中带有波浪线符号的引脚中带有波浪线符号的引脚编号;第二个是设置典雅的数值,数字信号输出时只有LOW或HIGH (0V和5V)两个数值,但模拟信号输出是可以设置为0V~5V中细分的256个具体数值。
Arduino等电子设备原本只以数字I/O方式运行,因此一般只机械地设置为“打开”和“关闭”,或是0/1的状态,那么,Arduino又如何输出模拟I/O信号的呢?答案便是只用了PWM(pulse-width modulation,脉宽调制)。
接收模拟信号输入
//保存模拟信号输入值的变量。
int a;
//读取A0引脚的模拟信号输入值。
a=analogRead(A0);
//a:0(0V)~1023(5V)
j要接收模拟信号构建电路图时,要牢记和数字信号接收输入时一样,注意设置为下拉或者上拉状态。Arduino中读取模拟信号输入指的函数为analogRead。AnalogRead函数需要一个参数,其值为尧都区模拟信号输入值的引脚编号,直接设置为A0~A5即可。调用函数后,读取analogRead函数中对应引脚编号的输入值并返回。
代码中,将返回值带入变量啊。就像analogWrite函数将电压细分为256个数值一样,analogRead也能将流入的模拟输入引脚的电压细分为进行识别,甚至切分得更细。从模拟输入引脚进入得电压可被切分为1024个,连接0V的返回值为0,连接5V电压返回的是1023,.连接2.5V时返回的是511。大部分传感器都连接模拟输入引脚。随着传感器值的不同,电压也不尽相同,取值范围是0V~1023V,由此决定感应温度、适度和亮度。