该模块5v时输出1v,因esp8266 ADC引脚(A0)支持电压范围是0v-1v,所以该方案仅支持0-5v电压检测
接线:
- 接 esp8266GND
+ 可不接
S 接 ADC esp8266 为 A0
VCC 被检测直流电+
GND 被检测直流电-
#include <Wire.h>
const int adcPin = A0; // ADC引脚
float calculateVoltage(int adcReading) {
// ADC最小读数
int minADC = 12;
// ADC最大读数
int maxADC = 338;
// 338 = 5.045v最大值
float maxADCVlotage = 5.045;
float normalizedReading = static_cast<float>(adcReading - minADC) / (maxADC - minADC);
float voltage = normalizedReading * maxADCVlotage;
return voltage;
}
void setup() {
Serial.begin(115200); // 初始化串口通信
}
void loop() {
// 读取ADC值
int adcReading = analogRead(adcPin);
// 计算电压
float voltage = calculateVoltage(adcReading);
// 输出结果
Serial.print("ADC读数: ");
Serial.print(adcReading);
Serial.print("\t电压: ");
Serial.print(voltage);
Serial.println("V");
delay(1000); // 延时1秒
}
如果您有更好的方案,请评论交流。