函數(shù)的作用:
配置用于模擬輸入的基準(zhǔn)電壓/參考電壓(即輸入范圍的最大值)。
在嵌入式應(yīng)用中十厢,引腳獲取模擬電壓值之后將根據(jù)參考電壓將模擬值轉(zhuǎn)換到0~1023
括號(hào)內(nèi)的參數(shù)??可以為:
DEFAULT:默認(rèn)5V或3.3V為基準(zhǔn)電壓厦酬。
INTERNAL:在ATmega168和ATmega328上以1.1V為基準(zhǔn)電壓搂鲫,以及在ATmega8上以2.56V為基準(zhǔn)電壓(Mega2560無此選項(xiàng))
INTERNAL1V1:以1.1V為基準(zhǔn)電壓(此選項(xiàng)僅針對(duì)Mega2560)
INTERNAL2V56:以2.56V為基準(zhǔn)電壓(此選項(xiàng)僅針對(duì)Mega2560)
EXTERNAL:以AREF引腳(0至5V)的電壓作為基準(zhǔn)電壓迷郑。
返回值:無
注意事項(xiàng):
改變基準(zhǔn)電壓后炭剪,之前從anal??ogRead()讀取的數(shù)據(jù)可能不準(zhǔn)確辉阶。
思考先壕!
初步了解了analogReference函數(shù),現(xiàn)在讓我們回想以前的通過LM35測(cè)量溫度那個(gè)項(xiàng)目谆甜。
如果我們用
analogReference(INTERNAL);
調(diào)用arduino板子內(nèi)部1.1V基準(zhǔn)垃僚,從LM35讀取的溫度數(shù)值會(huì)不會(huì)得到比原來更精細(xì)的溫度變化~~~
最終代碼:
void setup() {
Serial.begin(9600); //使用9600速率進(jìn)行串口通訊
analogReference(INTERNAL); //調(diào)用板載1.1V基準(zhǔn)源
}
void loop() {
int n = analogRead(A0); //讀取A0口的電壓值
double vol = n * (1.1 / 1024.0*100); //使用雙精度浮點(diǎn)數(shù)存儲(chǔ)溫度數(shù)據(jù),溫度數(shù)據(jù)由電壓值換算得到
Serial.println(vol); //串口輸出溫度數(shù)據(jù)
delay(1000); //等待1秒规辱,控制刷新速度
}