以下是 ESP32 中检测端口电平发生变化的代码示例:

int inputPin = 23; // 定义输入引脚
int currentState = 0; // 当前状态
int previousState = 0; // 上一状态

void setup() {
  pinMode(inputPin, INPUT_PULLUP); // 设置输入引脚为上拉输入模式
  Serial.begin(9600); // 初始化串口通信
}

void loop() {
  currentState = digitalRead(inputPin); // 读取输入引脚电平
  delay(10); // 延时 10 毫秒,避免抖动
  if (currentState != previousState) { // 判断当前状态是否与上一状态不同
    Serial.println('Input pin state changed'); // 输出提示信息
    if (currentState == LOW) { // 如果当前状态为低电平
      Serial.println('Input pin is LOW'); // 输出提示信息
    } else { // 如果当前状态为高电平
      Serial.println('Input pin is HIGH'); // 输出提示信息
    }
    previousState = currentState; // 更新上一状态
  }
}

注:在上述代码中,使用了 INPUT_PULLUP 模式,需要将端口接到 GND 才会触发状态变化。如果需要将端口接到 VCC 才会触发状态变化,可以使用 INPUT_PULLDOWN 模式。另外,需要注意避免抖动问题,可以通过加入适当的延时来解决。


原文地址: https://www.cveoy.top/t/topic/oX1S 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录