这个例子用电位器演示怎样读取物理世界的模拟输入。
ALPHA 电位器模块中的拨码开关,请确保1处于ON位置。
/* AnalogReadSerial 读取A0口的模拟输入,并显示在串口监视器 */ void setup() { // 初始化串口通信速率为9600 : Serial.begin(9600); } void loop() { // 读取A0口输入: int sensorValue = analogRead(A0); // 打印: Serial.println(sensorValue,DEC); delay(1); // 延时1毫秒 }
这个例子中我们使用了一个新函数:analogRead()该函数用来从指定的模拟引脚读取数据,我们把这种功能称作ADC或者模数转换。
通过调节电位器的旋钮,你可以改变任意一端到中间脚的阻值,这样就改变了中间脚的电压,当中间脚和连接5V脚的阻值为零的时候,中间脚的电压近似于5V,反过来,电压为0,这些电压就是输入到模拟口的电压。
ALPHA MEGA328-U自带的ADC(模数转换器)可以读取电压的改变,将它转换为0-1023的数字(10位精度)。当旋钮一直往一个方向拧,引脚上电压就是0,也就是输入值为0。当旋钮一直往另外一个方向拧,引脚上电压就是5v,也就是输入值为1023。在这之间有相应的电压输入到模拟口,analogRead() 返回一个介于0和1023之间的数值。
连接电位器的三个脚到OCROBOT控制器,第一根连接到GND,第二根连接到+3V3或者+5V(要根据系统电压选择,不可以超过系统电压),中间的第三根线连接到A0口。
通过调节电位器的旋钮,你可以改变任意一端到中间脚的阻值,这样就改变了中间脚的电压,当中间脚和连接5V脚的阻值为零的时候,中间脚的电压近似于5V,反过来,电压为0,这些电压就是你读到的作为输入的模拟口的值。
OCROBOT控制器自带的ADC(模数转换器)可以读取电压的改变,将它转换为0-1023的数字(10位精度)。当旋钮一直往一个方向拧,引脚上电压就是0,也就是输入值为0。当旋钮一直往另外一个方向拧,引脚上电压就是5v,也就是输入值为1023。在这之间,analogRead() 返回一个介于0和1023的数值,相应的电压就加在了引脚。
下面这个程序中,你只需要设置串口通信为9600比特每秒,命令如下
Serial.begin(9600);
然后在主循环中,设置一个变量来储存电位计的阻值(0-1023,最好为整型)
int sensorValue = analogRead(A0);
最后打印这个十进制数值到串口监视器中
Serial.println(sensorValue, DEC)
现在,当你打开串口监视器后,你可以看到稳定的0-1023的数据,每当转动旋钮,数据会立刻变动。
/* AnalogReadSerial 读取0口的模拟输入,并显示在串口监视器 连接电位器中间的线到arduino的A0,外面的两个脚接到arduino的+5v电源和gnd */ void setup() { // 初始化串口通信9600 : Serial.begin(9600); } void loop() { // 读取A0口输入: int sensorValue = analogRead(A0); // 打印: Serial.println(sensorValue,DEC); delay(1); // 延时1毫秒 }