類比模擬輸入

ESP32 ADC1 引腳映射

以下是與 ESP32 devkit DOIT 板的引腳映射。雖然 ESP32 芯片 ADC1 有 8 個通道,但 Devkit DOIT 板僅支持 6 個通道。但是,我們仍然有足夠的模擬通道用於模擬傳感器接口。ADC1_CH0 >>>GPIO36ADC1_CH1 >>>在此板上不可用 Devkit DoIT(30 引腳版本)ADC1_CH2 >>> 不適用ADC1_CH3 >>>GPIO39ADC1_CH6 >>>GPIO34ADC1_CH7 >>> GPIO35ADC1_CH4 >>> GPIO32ADC1_CH5 >>>GPIO33

ESP32 ADC2 引腳映射

下面給出了 ADC2 通道的引腳映射。Devkit DOIT 板 ADC2 支持10個模擬通道 Devkit do it board 上提供了所有這些模擬通道。ADC2_CH0 >>>GPIO0ADC2_CH1 >>> Devkit DOIT 板上沒有此通道ADC2_CH2 >>>GPIO2ADC2_CH3 >>> GPIO15ADC2_CH4 >>> GPIO13ADC2_CH5 >>> GPIO12ADC2_CH6 >>>GPIO14ADC2_CH7 >>> GPIO27ADC2_CH8 >>> GPIO25ADC2_CH9 >>> GPIO26

雖然我們在 ADC2 中有 10 個可用的模擬通道,但所有這些通道都在其他資源之間共享。比如ADC2是和WiFi驅動共享的,所以你只能在WiFi驅動沒有啟動後才能使用。您必須使您的程序足夠智能,以便在兩種資源之間切換。最簡單的方法是當你想使用 ADC2 時關閉 WiFi 驅動程序並讀取模擬值,然後當你想更新值到服務器等時打開 WiFi 驅動程序。

使用 ESP32 ADC 進行模擬電壓測量的代碼

const int Analog_channel_pin= 15; //首先我們將 ADC2_CH3 命名為 Analog_channel_pin,然後將兩個整數變量初始化為零。一個變量用於存儲數字值,另一個變量用於存儲電壓。int ADC_VALUE = 0;int voltage_value = 0; void setup() {Serial.begin(115200);}void loop() {ADC_VALUE = analogRead(Analog_channel_pin);Serial.print("ADC VALUE = ");Serial.println(ADC_VALUE);delay(1000);voltage_value = (ADC_VALUE * 3.3 ) / (4095); //將 ADC_VALUE 的數字值轉換為電壓。ADC_VALUE 乘以一個ESP32 ADC 分辨率即 3.3 / 4095。分辨率也稱為每個相應電壓值的 adc 最小步長Serial.print("Voltage = ");Serial.print(voltage_value);Serial.print("volts");delay(1000);}