上节我们学习了按键的识别,这是一种纯数字信号0,1的应用。本章讲解利用Arduino读取模拟信号,通过引脚可以读取外部的电压值;具体的AD转换原理大家可以百度查找,我们教程的宗旨是,只发干货!!!
原理大放送:
UNO PLUS开发板主芯片采用ATMEGA38P-AU,该芯片供电电压范围广,适应3.3V及5V供电,内置10位AD转换模块,所以可提供2^10 = 1024级模数转换。当系统的供电为3.3V时,对应的分辨率可以达到3300mv / 1024 = 3.22mv,即每个AD值代表3.22mv;若5V供电,分辨率为5000mv / 1024 = 4.88mv,每个AD采样值代表4.88mv。 Accessory Shield板载的10k可调电位器采用3.3V供电,即最大可调节输出的电压值为3.3V。若开发板供电电压配置为3.3V,输出AD值的范围是0-1023;若开发板供电电压配置为5V,此时ADC的分辨率为4.88mv,电位器最大输出电压3.3V对应的AD值为3300 / 4.88 = 676,即输出AD值的范围是0-676。
代码示例: 01 | const int analog_pin = 0 ; |
12 | adcvalue = analogRead(analog_pin); |
14 | Serial.print( "The current ADC value is: " ); |
15 | Serial.println(adcvalue); |
程序运行后,打开串口监视器,可以看到当前采样的AD值,旋转电位器,输出值会发生改变。现象见下图:
附件:
|