以下是一个使用Arduino的代码示例,实现在开关情况下循环,直到再次按下按钮:
const int buttonPin = 2; // 按钮连接到数字引脚2
const int ledPin = 13; // LED连接到数字引脚13
int buttonState = HIGH; // 按钮状态,默认为高电平
int lastButtonState = HIGH; // 上一次按钮状态,默认为高电平
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // 设置按钮引脚为上拉输入模式
pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式
}
void loop() {
buttonState = digitalRead(buttonPin); // 读取按钮引脚的状态
// 检测按钮状态是否由高电平变为低电平
if (buttonState == LOW && lastButtonState == HIGH) {
digitalWrite(ledPin, !digitalRead(ledPin)); // 切换LED状态
}
lastButtonState = buttonState; // 更新上一次按钮状态
delay(50); // 延迟一段时间,避免过快重复检测按钮状态
}
这个示例中,我们首先设置了两个常量,buttonPin
表示按钮连接的数字引脚,ledPin
表示LED连接的数字引脚。然后,在setup()
函数里,我们将按钮引脚设置为上拉输入模式,将LED引脚设置为输出模式。
在loop()
函数里,我们通过digitalRead()
函数读取按钮引脚的状态,并将其存储在buttonState
变量中。然后,我们检测按钮状态是否由高电平变为低电平,如果是,则切换LED的状态,即通过digitalRead()
函数读取LED引脚的状态,并使用!
运算符取反,再通过digitalWrite()
函数将新的状态写入LED引脚。
最后,我们更新lastButtonState
变量为当前按钮状态,并通过delay()
函数延迟一段时间,避免过快重复检测按钮状态。这样,当按钮按下后,LED的状态会切换一次,然后会在再次按下按钮之前一直保持不变。