快速入门8-读取模拟数值

在前面我们一直使用的是数字引脚,但是很多情况下我们需要测量一个模拟量,比如读取某个变化的电压值,这时候就需要模拟引脚的功能了,下面我们在电路中加入一个电位器,看看随着电位器的变化,读取到的模拟数值变化。

一、工具原料

电脑,windows系统
零知开发板
micro-usb线
电位器
面包板一个+若干跳线

二、连接

三、代码

1、打开零知实验室软件开发工具,然后新建项目,输入以下代码:


							
	/**
	*    文件: 电位器测试.ino
	*    作者: 零知
	*    时间: 2018/06/25 17:59
	*    说明: 
	**/
	  
	int value = 0;//读取的值
	void setup() {
	        pinMode(LED_BUILTIN, OUTPUT);//设置板子上的LED灯引脚
	        Serial.begin(9600);//打开串口,可以在串口监视器中查看测量的数值
	}
	  
	void loop() {
	        value = analogRead(A0);
	        Serial.println(value);
	          
	        //读取一次后,我们让开发板上的LED灯闪烁一次,表示一次读取完成
	        digitalWrite(LED_BUILTIN, HIGH);
	        delay(80);
	        digitalWrite(LED_BUILTIN, LOW);
	        delay(80);
	          
	        //延时一会儿,让串口输出慢一点便于观察
	        delay(500);
	}
							
						

2、按照之前的方式先【验证】,然后【上传】到开发板中。

四、成果展示

上面步骤成功完成后,我们就可以看到预期的结果了,打开零知开发工具的【调试】,然后我们把电位器从开始调到最大,可以看到如下数据变化。

五、拓展

在上面我们读取的数值有些人可能比较迷惑,我们现在把这些原始模拟值转换为实际的电压值,编写如下代码:


						
	/**
	*    文件: 电位器测试.ino
	*    作者: 零知
	*    时间: 2019/05/28 17:59
	*    说明: 
	**/
	  
	int value = 0;//读取的原始模拟数值
	int voltage = 0;//实际电压值
	void setup() {
	        pinMode(LED_BUILTIN, OUTPUT);//设置板子上的LED灯引脚
	        Serial.begin(9600);//打开串口,可以在串口监视器中查看测量的数值
	}
	
	void loop() {
	        value = analogRead(A0);
	        //次函数就可以把数值进行范围映射,可以测量的最大值为4095,而我实际的最大测量电压为3.3v
	        voltage = map(value, 0, 1024, 0, 330);
	        Serial.println((float)voltage/100.00); //保留两位小数
	        //读取一次后,我们让开发板上的LED灯闪烁一次,表示一次读取完成
	        digitalWrite(LED_BUILTIN, HIGH);
	        delay(80);
	        digitalWrite(LED_BUILTIN, LOW);
	        delay(80);
	          
	        //延时一会儿,让串口输出慢一点便于观察
	        delay(500);
	}				
					

然后重新验证代码后上传到开发板中,然后打开串口监视器可以看到当我们旋转电位器的时候,实际的电压变化: