ESP32 ADC1 引腳映射
以下是與 ESP32 devkit DOIT 板的引腳映射。雖然 ESP32 芯片 ADC1 有 8 個通道,但 Devkit DOIT 板僅支持 6 個通道。但是,我們仍然有足夠的模擬通道用於模擬傳感器接口。
ADC1_CH0 >>>GPIO36
ADC1_CH1 >>>在此板上不可用 Devkit DoIT(30 引腳版本)
ADC1_CH2 >>> 不適用
ADC1_CH3 >>>GPIO39
ADC1_CH6 >>>GPIO34
ADC1_CH7 >>> GPIO35
ADC1_CH4 >>> GPIO32
ADC1_CH5 >>>GPIO33
ESP32 ADC2 引腳映射
下面給出了 ADC2 通道的引腳映射。Devkit DOIT 板 ADC2 支持10個模擬通道 Devkit do it board 上提供了所有這些模擬通道。
ADC2_CH0 >>>GPIO0
ADC2_CH1 >>> Devkit DOIT 板上沒有此通道
ADC2_CH2 >>>GPIO2
ADC2_CH3 >>> GPIO15
ADC2_CH4 >>> GPIO13
ADC2_CH5 >>> GPIO12
ADC2_CH6 >>>GPIO14
ADC2_CH7 >>> GPIO27
ADC2_CH8 >>> GPIO25
ADC2_CH9 >>> GPIO26
雖然我們在 ADC2 中有 10 個可用的模擬通道,但所有這些通道都在其他資源之間共享。比如ADC2是和WiFi驅動共享的,所以你只能在WiFi驅動沒有啟動後才能使用。您必須使您的程序足夠智能,以便在兩種資源之間切換。最簡單的方法是當你想使用 ADC2 時關閉 WiFi 驅動程序並讀取模擬值,然後當你想更新值到服務器等時打開 WiFi 驅動程序。
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);
}