玩转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;
}