TA的每日心情 | 奋斗 2023-6-27 14:09 |
---|
签到天数: 943 天 连续签到: 1 天 [LV.10]以坛为家III
|
本帖最后由 9robot 于 2016-12-30 13:33 编辑
Fireduino带有ADC模块,可以测量外部模拟量的电压值,这次学习时使用了一个四线光敏电阻模块,该模块可以输出数字量和模拟量,通过改变环境的光照强度,引起光敏电阻阻值变化,进而引起所测量电压值的改变,Fireduino可以根据测的电压值感知环境的大致光照强度,如果外接一个灯,则可以改变其亮度,使光照亮度与周围环境相适应。
这次只是用了一个函数analogRead(),使用的通道是A0。
以下是和FireduinoADC相关的函数:
analogReference()
说明
选择ADC的基准电压(等同于可以输入电压的最大值)。Fireduino只能够选择内部基准电压,并且只有一个基准电压可以 选取,为2.56V。
语法
analogReference(INTERNAL2V56)
参数
INTERNAL2V56 : 内部基准源,2.56V(默认)
返回值
无
注意事项
由于ADC的基准只有一项,实际上可以不进行配置。如果有进行配置其他选项的话,那么该配置语句是无效的,基准并不 会因此改变。
analogRead()
说明
读取模拟引脚的输入电压测量值(不可大于基准电压)。 Fireduino一共有8个10bit的ADC(逐次逼近型)输入口,分别是 A0~A7。调用此函数的时候,ADC会将基准电压分成1024份,然后一份一份的叠加, 直到最接近当前模拟引脚的电压为 止,此时叠加的值就是电压测量值。 所以实际上引脚上的电压值为:V = value/1024*Vef(V:实际测量电压值,value为电压 测量值,即此函数的返回值,Vef为基准电压,2.56V)。
语法
analogRead(pin)
参数
pin:需要进行ADC采集的模拟输入引脚。(A0~A7)
返回值
ADC测量值,取值为0~1023。 获取当前电压值的方法是:当前电压值 = (ADC测量值/1023)* ADC基准电压值。
注意事项
如果ADC采集对应的模拟输入引脚没有接入任何电流,那么由analogRead()返回的值将根据多项因素(例如其他模拟输入引 脚,你的手靠近板子等)产生波动。- val = analogRead(analogPin); // read the input pin
- voltage = (float)val / 1023.0 * 2.55; // calculate actual voltage of pin A0 base adc test value val
- adc_val[0]=(char)voltage+'0';
- adc_val[1]='.';
- adc_val[2]=((char)(voltage*10))%10+'0';
- adc_val[3]=((char)(voltage*100))%10+'0';
- adc_val[4]='\0';
- LCD_P8x16Str(0,0,tab);
- LCD_P8x16Str(0,2,adc_val);
- delay(1000); // delay 1s
复制代码 。
|
评分
-
查看全部评分
|