我希望我的代码在代码的第一部分之后停止运行,并等到开关更改状态后再运行...我似乎找不到找到该命令的命令!任何帮助表示赞赏。 我已将代码标记到一半,我希望将其停止。
int switchState = 0;
void setup() {
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(2,INPUT);
}
void loop() {
switchState = digitalRead(2);
if (switchState == LOW) {
// The button is not pressed
delay(250);
digitalWrite(3, HIGH);
delay(250);
digitalWrite(4, HIGH);
delay(250);
digitalWrite(5, HIGH);
delay(500);
digitalWrite(3, LOW);
delay(250);
digitalWrite(4, LOW);
delay(250);
digitalWrite(5, LOW);
delay(1000);
digitalWrite(3, HIGH); // green LED
digitalWrite(4, HIGH); // red LED
digitalWrite(5, HIGH); // red LED
delay(100);
digitalWrite(3, LOW); // green LED
digitalWrite(4, LOW); // red LED
digitalWrite(5, LOW); // red LED
delay(100);
digitalWrite(3, HIGH); // green LED
digitalWrite(4, HIGH); // red LED
digitalWrite(5, HIGH); // red LED
delay(100);
digitalWrite(3, LOW); // green LED
digitalWrite(4, LOW); // red LED
digitalWrite(5, LOW); // red LED
delay(100);
digitalWrite(3, HIGH); // green LED
digitalWrite(4, HIGH); // red LED
digitalWrite(5, HIGH); // red LED
delay(100);
digitalWrite(3, LOW); // green LED
digitalWrite(4, LOW); // red LED
digitalWrite(5, LOW); // red LED
delay(100);
digitalWrite(3, HIGH); // green LED
digitalWrite(4, HIGH); // red LED
digitalWrite(5, HIGH); // red LED
delay(100);
digitalWrite(3, LOW); // green LED
digitalWrite(4, LOW); // red LED
digitalWrite(5, LOW); // red LED
delay(1000);
digitalWrite(3, HIGH); // green LED
digitalWrite(4, LOW); // red LED
digitalWrite(5, LOW); // red LED
// HERE IS WHERE I WANT TO HALT THE EXECUTION OF THE FIRST PART OF THE CODE
}
else {
digitalWrite(3, LOW); // green LED
digitalWrite(4, HIGH); // red LED
digitalWrite(5, HIGH); // red LED
delay(250); // wait quarter of a second
digitalWrite(4, HIGH); // red LED
digitalWrite(5, LOW); // red LED
delay(250); // wait quarter of a second
}
} // go back to beginning of loo
我希望我的代码在代码的第一部分之后停止运行,并等到开关更改状态后再运行...我似乎找不到找到该命令的命令!任何帮助表示赞赏。 我已将代码标记到一半,我希望将其停止。
答案 0 :(得分:0)
您可以通过最后一个状态变量轻松实现此目标:
int switchState = 0;
int lastSwitchState = 2;
void setup() {
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(2,INPUT);
}
void loop() {
switchState = digitalRead(2);
if (switchState != lastSwitchState) {
if (switchState == LOW) {
// The button is not pressed
delay(250);
digitalWrite(3, HIGH);
// ...
// HERE IS WHERE I WANT TO HALT THE EXECUTION OF THE FIRST PART OF THE CODE
lastSwitchState = switchState;
} else {
// ...
digitalWrite(5, LOW); // red LED
delay(250); // wait quarter of a second
lastSwitchState = switchState;
}
} else {
// Implement powersave state or idle procedure
}
} // go back to beginning of the loop
此代码仅检查当前值是否等于最后一个值。如果它们不同,它只会执行您的核心代码。如果它们(switchState
和lastSwitchState
)相同,则可以输入节电过程或仅输入无限循环。因此,除非值已更改,否则循环将在下一次迭代时“暂停”。