玩转Arduino(2)-按钮控制小灯

思路
按钮按下输出为低电平,按钮抬起时为高电平。
萌叔希望达到的效果是按一下按钮,小灯亮起,再按一次,小灯熄灭
需要捕获电位从 低电位 -> 高电位 的这个变化

代码
#define legPinIn 10
#define legPinOut 5
bool isLightOn = false;
int preMode = HIGH;
int currMode = HIGH;
void setup() {
  Serial.begin(9600);
  pinMode(legPinIn, INPUT);
  pinMode(legPinOut, OUTPUT);
}
void loop() {
  isLightOn = getLightState();
  if (isLightOn) {
    digitalWrite(legPinOut, HIGH);
  } else {
    digitalWrite(legPinOut, LOW);
  }
  delay(100);
}
bool getLightState() {
  if (digitalRead(legPinIn) != currMode) {
    preMode = currMode;
    currMode = digitalRead(legPinIn);
    if (preMode == LOW && currMode == HIGH) {
      isLightOn = !isLightOn;
      Serial.print("isLightOn: ");
      Serial.println(isLightOn);
    }
  }
  return isLightOn;
}
演示视频
作者:  vearne
文章标题: 玩转Arduino(2)-按钮控制小灯
发表时间: 2024年10月20日
文章链接: https://vearne.cc/archives/40174
版权说明: CC BY-NC-ND 4.0 DEED
