【ESP32】读取模拟信号值,以光敏传感器为例

使用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);
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值