在 Arduino 中,我们通常使用循环语句来控制程序的流程。但是,在某些情况下,循环需要在满足某些条件之后提前结束。此时我们就需要用到 break 关键字。
break 关键字的作用是:在 for、while、do-while 等循环语句中,当满足某个条件时就立即跳出循环,不再执行循环语句中后续的语句。
Arduino 中有时我们需要使用多重循环语句,比如使用两层 for 循环控制二维数组进行处理。在这种情况下,如果直接使用 break 只能跳出第一层循环,不能跳出两层循环。此时我们可以在外层循环中设立一个标记,然后在内层循环中使用 break 时不仅跳出内层循环,也跳出外层循环,从而达到跳出多重循环的效果。
除了 break 关键字可以提前结束循环外,Arduino 还提供了另一个关键字 continue。continue 关键字的作用是跳过本次循环,直接进入下一次循环。
使用 continue 关键字时,当前循环中后续的语句将不再执行,直接跳到下一次循环开始处执行。这个关键字的作用在某些循环控制语句中尤为明显,尤其是在特定条件下需要跳过循环的情况下。
在 Arduino 开发中,最经典的手工实验就是流水灯实验了。这个实验可以通过使用 break 和 continue 关键字来进行优化,实现更加灵活的效果。在本案例中,我们将使用 break 和 continue 关键字来优化流水灯实验。
在这个案例中,我们可以使用 while 循环控制 LED 灯的亮灭,使用 for 循环控制流水灯的滚动。代码中使用了两个循环嵌套和控制语句,实现了流水灯的前后滚动和暂停、继续功能的控制。
最终的代码可以参考如下:
```C++
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
int delayTime = 150;
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(ledPins[i], OUTPUT);
}
void loop() {
int count = 0;
while (count < 2) {
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], HIGH);
delay(delayTime);
digitalWrite(ledPins[i], LOW);
if (i == 3 && count == 0) {
delay(delayTime);
break;
}
if (i == 7 && count == 1) {
delay(delayTime);
break;
}
if (i == 7) {
count++;
delay(delayTime);
i = -1;
}
}
}
delay(delayTime * 5);
for (int i = 7; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(delayTime);
digitalWrite(ledPins[i], LOW);
if (i == 0) {
delay(delayTime * 3);
continue;
}
delay(delayTime);
}
```