使用esp32
读取模拟值意味着可以测量 0 V 到 3.3 V 之间的变化电压电平。
然后将测得的电压分配给一个介于 0 和 4095 之间的值,其中 0 V 对应于 0,3.3 V 对应于 4095。任何介于 0 V 和 3.3 V 之间的电压将被赋予介于两者之间的相应值。
注意ADC是非线性的,也就是说ESP32无法区分 3.3 V 和 3.2 V。两种电压的值相同:4095。对于非常低的电压值也会发生同样的情况:对于 0 V 和 0.1 V,您将获得相同的值:0。使用 ESP32 ADC 引脚时需要牢记这一点。
读取模拟信号值,使用analogRead()函数
使用 Arduino IDE 通过 ESP32 读取模拟输入就像使用 模拟读取()功能。它接受您要读取的 GPIO 作为参数:
analogRead(GPIO);
ESP32 支持 18 个不同通道的测量。DEVKIT V1 DOIT板(具有 30 个 GPIO 的版本)中只有 15 个可用。
抓住你的 ESP32 板引脚排列并找到 ADC 引脚。这些在下图中用红色边框突出显示。
这些模拟输入引脚具有 12 位分辨率。这意味着当您读取模拟输入时,其范围可能从 0 到 4095 不等。
注意:使用 Wi-Fi 时不能使用 ADC2 引脚。因此,如果您使用 Wi-Fi 并且无法从 ADC2 GPIO 获取值,您可以考虑改用 ADC1 GPIO,这应该可以解决您的问题。
还有其他更高级的功能可与 ADC 引脚一起使用,这些功能可用于其他项目。
analogReadResolution(分辨率):设置样本位和分辨率。它可以是 9 (0 – 511) 和 12 位 (0 – 4095) 之间的值。默认为 12 位分辨率。
模拟设置宽度(宽度):设置样本位和分辨率。它可以是 9 (0 – 511) 和 12 位 (0 – 4095) 之间的值。默认为 12 位分辨率。
analogSetCycles(周期):设置每个样本的循环数。默认值为 8。范围:1 到 255。
模拟集样本(样本):设置范围内的样本数。默认为 1 个样本。有增加敏感度的效果。
analogSetClockDiv(衰减): 设置 ADC 时钟的分频器。默认值为 1。范围:1 到 255。
analogSetAttenuation(衰减):设置所有 ADC 引脚的输入衰减。默认是ADC_11db. 接受的值:
下面是代码:
// Potentiometer is connected to GPIO 34 (Analog ADC1_CH6)
const int potPin = 34;
// variable for storing the potentiometer value
int potValue = 0;
void setup() {
Serial.begin(115200);
delay(1000);
}
void loop() {
// Reading potentiometer value
potValue = analogRead(potPin);
Serial.println(potValue);
delay(500);
}