0
遅延を無効にしてループを終了することはできますか? 私がしたいのは、ボタンを押してループを終了することです。しかし、next()
メソッドを実行する前にループを終了したようです。遅延とループのオーバーライド
void blink1() {
loop_flag = true;
while (loop_flag) {
// Loop for Lights
for (int x = 0; x < LED_IN; x++) {
btn_press = digitalRead(btn_1);
if (!btn_press) {
digitalWrite(LED_BUILTIN, HIGH);
next(); //loop_flag = false; is stored
} else {
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(led[x], HIGH);
delay(1000);
digitalWrite(led[x], LOW);
}
}
}
}
void next() {
Serial.write("pressed next \n");
flag = getFlag(flag); // Sets new Flag
loop_flag = false; //ends the loop flag
delay(100); //delay for button friendly
}
'for'ループにも' loop_flag'が 'false'であるかどうかのチェックを追加することがありますか?例えばのように。 'x
なぜあなたは遅延を取り除かないのですか?それは完全に余分なようです。ループは終了し、 'loop_flag'がセットされた後に関数が戻ります。 – Damon
それから点滅しません。 Delayは、LEDの点灯時間を設定するのに使用されます。 –