ESP8266具有內置的10位ADC,只有一個ADC通道(A0引腳),即只有一個ADC輸入引腳可讀取來自外部器件的模擬電壓
ESP8266上的ADC通道和芯片供電電壓復用,也就是說我們可以將其設置為測量系統電壓或者外部電壓
測量外部電壓:
analogRead(A0),用於讀取施加在模塊的ADC引腳上的外部電壓;
輸入電壓范圍: 0 - 3.0V之間;
測量精度 由於ADC具有10位分辨率,因此會給出0-1023的值范圍;
注意點: 為了支持外部電壓范圍(0-3.3v),NodeMcu做了一個電阻分壓器,如圖所示:
例子
編寫一個讀取NodeMcu的ADC引腳上的模擬電壓。我們這里使用電位器在ADC引腳上提供0-3.3V的可變電壓。如下圖連接線:
代碼:
void setup() { Serial.begin(115200);//配置波特率 } void loop() { Serial.print("ADC Value: "); Serial.println(analogRead(A0));//讀取A0腳的數據,輸出0-1023 對應 外部輸入電壓 0-1.0v delay(1000); }
測量系統VCC電壓:
ADC引腳必須保持懸空;在讀取VCC電源電壓之前,應更改ADC模式以讀取系統電壓
ADC_MODE(ADC_VCC);//設置ADC模式為讀取系統電壓 //ADC_MODE(ADC_TOUT) 讀取外部電壓模式---默認 void setup() { Serial.begin(115200);//配置波特率 } void loop() { Serial.print("ESP8266當前系統電壓(mV): "); Serial.println(ESP.getVcc());//ESP.getVcc()讀取VCC的電壓,單位mv delay(1000); }
天子驕龍