引脚定义:
ESP32模拟输入(ADC)功能的引脚可以测量 0 V 至 3.3 V 之间的不同电压,这些引脚具有 12 位分辨率,所以可以将测量的电压分配给 0 到 4095 之间的值,其中 0 V 对应于 0,3.3 V 对应于 4095。
ESP32 支持 18 个不同通道的测量,在ESP-WROOM-32中引出15个,图中用红色方框圈出
需要注意的是采集的ADC是非线性的,无法区分 0V 和 0.1V 以及 3.2V 和 3.3V 的电压:
使用 Wi-Fi 时不能使用 ADC2 引脚,无法从 ADC2 GPIO 获取值。
代码:
ESP32 读取ADC函数:
analogRead(pin);
Code:
// 电位器连接 GPIO 34 (ADC1_CH6)
const int potPin = 34;
int potValue = 0; // 存储电位器读取量
void setup()
{
Serial.begin(115200);
delay(1000);
}
void loop()
{
potValue = analogRead(potPin); // ADC 读取电位器
Serial.println(potValue);
delay(500);
}
ADC引脚其他功能:
- analogReadResolution(resolution):设置analogRead返回值的分辨率,默认12位(范围从0到4096)。参数介于9(0–511) 和12(0–4095)之间。
- analogSetWidth(width):设置analogRead返回值的分辨率,默认12位(范围从0到4096)。参数介于9(0–511) 和12(0–4095)之间。
- analogSetClockDiv(attenuation):设置ADC时钟分频器,默认值1。参数范围:1到255。
- analogSetAttenuation(attenuation):设置所有ADC通道输入衰减,默认值ADC_11db。参数值:
- ADC_0db:无衰减。ADC 的测量电压约为800 mV(1V输入= ADC读数1088)
- ADC_2_5db:ADC 输入电压衰减,将测量范围扩展到约1100 mV。(1V 输入 = ADC 读数 3722)。
- ADC_6db:ADC 输入电压衰减,将测量范围扩展到约1350 mV。(1V 输入 = ADC 读数 3033)。
- ADC_11db:ADC 输入电压衰减,将测量范围扩展到约2600 mV。(1V 输入 = ADC 读数 1575)。
- analogSetPinAttenuation(pin, attenuation):设置指定引脚输入衰减。默认值ADC_11db。衰减值与上一个函数相同。
- adcAttachPin(pin):将引脚连接到ADC(同时清除可能打开的任何其他模拟模式),返回 TRUE 或 FALSE 结果。