|
esp8266有一个adc引脚,可以支持0到1v的检测,这个adc只有10位的分辨率,因此检测值最大只有1024
因为检测值只到1v,因此大部分的传感器输出的模拟量会超出范围,需要使用电阻进行分压,以光敏电阻为例
在光照很亮的情况下,亮电阻阻值在2-5千欧,因此我们要保证电阻达到2千欧的时候,经过分压电阻后,模拟量接口仍然能采样到1v的电压,因此要保证分压电阻小于4.6千欧,为了方便购买,可以选用4.7千欧的电阻,因为亮电阻低于2千欧很少状态能达到,所以选用4.7k电阻,再配合代码弥补也可以达到理想状态。
在完成电路搭建后,我们就可以着手于代码的编写了,esp8266的nonos api提供了多个api用于adc的读取,但是由于我们使用机智云的固件需要连接wifi使用,wifi会影响adc的采样周期和数值,因此adc_fast_read函数在wifi开启的时候读取的数值是不准确的,要想在wifi开启的同时使用adc可以使用adc_read函数,同时确保采样次数在每秒1000次内。
由于esp8266只有一个adc接口,因此我们调用uint16 system_adc_read(void)函数即可获取adc采样的数值,我们把adc采样代码放到机智云固件的userhandle里进行循环执行。
最后我们通过串口查看一下adc读取数值
|
|