使用 if 语句实现函数中断



我想实现函数中断((,但我不知道具体如何实现。在这种情况下,在代码中可以看到 2 个 for 循环:我希望每当按下 2 个按钮中的一个时,循环内的进程立即中断:

void loop() {
int brightButton = digitalRead(K1);
int ldrStatus = analogRead(ldrPin);
if (brightButton == LOW && ldrStatus >= 200)
{
for (int i = 0; i < 10; i++)
{
digitalWrite(greenLed, HIGH);
tone(buzzer,400);
delay(500);
noTone(buzzer);
delay(500);
}
}
else {
digitalWrite(greenLed, LOW);
}
int tempButton = digitalRead(K2);
int valNTC = analogRead(NTC);
if (tempButton == LOW && valNTC > 512)
{
for (int i = 0; i <10; i++)
{
digitalWrite(redLed, HIGH);
tone(buzzer,450);
delay(300);
noTone(buzzer);
delay(1000);
}
}
else {
digitalWrite(redLed, LOW);
}
}

Arduino 手册中的示例代码:

https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/

const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
}
void loop() {
digitalWrite(ledPin, state);
}
void blink() {
state = !state;
}

请注意,这将中断 for 循环,并在中断服务例程完成后返回该循环。 如果要中止 for 循环,请检查每个循环中的引脚状态,如果要离开 for 循环,请断开,如果要离开 loop((,则返回。 当然,这不是"立即"。

最新更新