Arduino数组无限循环实现技术求助
实现数组元素的无限循环自动重启
首先得明确:在Arduino环境里,loop()函数本身就是被系统自动无限调用的——所以你现在的代码其实已经在做「无限循环打印整个数组」的事情了!每次loop()运行时,会把数组里的3、5、6、7、1、2挨个打印一遍,然后loop()自动重启,再次重复这个过程。
不过我猜你可能想要的是逐个元素循环输出,每次只打印一个,到数组最后一个元素后自动跳回第一个?如果是这样的话,咱们可以调整代码来实现:
方案1:逐个元素循环(每次输出一个,循环往复)
const int myArray[] = {3,5,6,7,1,2}; // 全局变量记录当前要输出的元素索引,初始从第一个元素开始 int currentIndex = 0; void setup() { Serial.begin(9600); // 别忘了初始化串口,不然看不到输出! } void loop() { // 打印当前索引对应的数组元素 Serial.println(myArray[currentIndex]); // 索引自增,当走到数组末尾时重置为0 currentIndex++; // 计算数组的总元素个数,这样数组增减元素时不用手动改数字 int arrayLength = sizeof(myArray) / sizeof(myArray[0]); if (currentIndex >= arrayLength) { currentIndex = 0; } // 可选:添加延迟,让每个元素输出间隔1秒,方便观察 delay(1000); }
代码说明:
currentIndex是全局变量,所以每次loop()调用时会保留上一次的索引值,不会被重置。sizeof(myArray)/sizeof(myArray[0])是计算数组元素总数的通用写法,不管数组里有多少元素,这个表达式都能算出正确的长度。delay(1000)可以根据你的需求调整,比如改成500就是间隔0.5秒输出。
方案2:保持原逻辑(每次打印整个数组,无限重复)
如果你本来就想要每次打印完整组元素再重复,那只需要给原代码加上串口初始化就行,否则Serial.println不会有输出:
const int myArray[] = {3,5,6,7,1,2}; void setup() { Serial.begin(9600); // 必须初始化串口才能在串口监视器看到内容 } void loop() { for (int element : myArray) { Serial.println(element); } // 可选:添加延迟,避免打印速度太快看不清 delay(1000); }
内容的提问来源于stack exchange,提问作者Huismori
相关产品推荐
相关产品推荐

