循环的Arduino是那些面包和黄油功能之一
您将在代码中的所有时间使用。微控制器很好
在重复的任务中,而是写出许多代码
时间,for-循环重复一段代码特定数字
of times.
您可以在函数内的任何地方使用循环,所以您可以
在标准的Arduino Setup()和循环()函数中使用它们,内部
your own functions.
以下示例显示了循环循环的循环
打印数字0到9.它被放入Setup()函数中
由于您只想一次执行for-loop操作 - 否则
如果将其放在循环()中将其放置在循环()中,它将重复输出
信息 - 让你旋转(试试吧,看)!
void setup (void) {
Serial.begin(9600);
Serial.println("Arduino for loop");
for (在 t i=0; i<10; i++) Serial.println(i);
}
void loop(void) {
}
循环的Arduino提供了一种重复一节的机制
代码取决于变量的值。所以你设置了初始
变量的值,退出循环的条件(测试变量),以及动作
每次循环周围的变量。
初始化部分: | 控制变量的初始值。 |
条件部分: | 停止循环的条件。 |
迭代器部分: |
循环变量动作(递增或递减)。 |
这三个元素是for循环的参数,并通过分号分隔:
关于循环的其他重要点是它们需要一个循环控制变量 - 在示例中
这是变量i。这用作循环计数器,用于决定何时退出循环。
先前所示的代码是写入循环的标准方法 其中循环变量以零开始,递增10次。
for (在 t i=0; i<10; i++) Serial.println(i);
INT I = 0;
首先是变量'i'创建(如果它尚未存在)并设置为零。
FOR-LOOP的这一部分仅在开始时执行一次。
i < 10;
接下来,测试循环变量。这里,如果它小于10,则继续 - 否则循环被退出。
这是每次在循环周围执行的。
因此for-循环执行代码"Serial.print(i)"价值10次'i'经历0到9。
这是输出:
arduino. for loop 0 1 2 3 4 5 6 7 8 9
for (在 t i=1; i<= 10. ; i++) Serial.println(i);
在循环代码的末尾(外部卷曲括号)的值'i' will be 11, because when 'i'达到11个声明'i<=10' is false so the loop is exited.
void setup (void) {
Serial.begin(9600);
Serial.println("Arduino for loop");
for (在 t i=0; i<7; i++) {
Serial.print("i is : ");
Serial.println(i);
}
}
void loop(void) {
}
请注意,如何在两个语句 - 以分号终止和两者结尾 由卷曲括号括起来。将此与前一个示例进行比较 仅在半冒号中仅使用一个陈述。
在这种情况下,输出是:arduino. for loop i is : 0 i is : 1 i is : 2 i is : 3 i is : 4 i is : 5 i is : 6 i is : 7
问:这里'对你有个问题。循环执行后我的值是多少?
问:另一个问题。你可以在程序中使用我吗?
void setup (void) {
Serial.begin(9600);
Serial.println("Arduino count down for loop");
for (在 t i=10; i>=1; i--) {
Serial.print("i is : ");
Serial.println(i);
}
}
void loop(void) {
}
这里'倒计时输出:
arduino. count down for loop i is : 10 i is : 9 i is : 8 i is : 7 i is : 6 i is : 5 i is : 4 i is : 3 i is : 2 i is : 1
问:这里'对你来说同样的问题。循环执行后我的值是多少?
您在零中以控制循环变量开始的原因是
该数组从索引零开始定义。如果你不't use zero
作为初始起点,那么您可以通过一个错误进行关闭 -
意思是您可以写入不存在的数组位置。为
10个值的数组仅为指标0..9有效。
这里'设置初始化每个元素的数组的示例
随机数。然后依次打印出数组值。
在 t myarray[10];
void setup (void) {
Serial.begin(9600);
for (在 t i=0; i<10; i++) myarray[i]= random(100);
Serial.println("Arduino for loop");
for (在 t i=0; i<10; i++) {
Serial.print("i is : ");
Serial.print(i);
Serial.print(" array value is ");
Serial.println(myarray[i]);
}
}
void loop(void) {
}
除非您提供种子,否则随机数输出并非真正随机
值 - 也应该来自随机源 - 例如按钮
press capturing the Millis() 定时器值 - 真正随机的种子。 for循环的标准形式将控制变量初始化为
0.为了退出循环,条件测试是否可变
小于所需的环数。你不't必须使用它但是
处理阵列时,它会使生活更轻松。
的价值'i'对于卷曲中的代码,从0到9
括号。所以它遍历10个值。阵列使用更容易的原因
这是阵列从 索引零.
标准表格是:
for (在 t i=0; i<10; i++) {
<block of code to execute>
}
在循环代码的末尾(外部卷曲括号)的值'i'
将是10,因为什么时候'i'达到10个声明'i<10' is false
所以循环被退出。
在 t i=0;
变量均声明并初始化 - 这是一个C ++功能。void myFunction(void) {
在 t i;
for(i=0;i<10;i++) {
Serial.println(i);
}
for(i=10;i>0;i++) {
Serial.println(i);
}
}
一个问题是:
"Arduino IDE中运行了多少次循环函数:"
arduino.代码中的循环函数是所谓的无限
可以使用虽然结构或用于的循环
loop structure:
这 循环时 用于循环略微不同地使用,没有迭代器。
while(1) {
// Do something forever
}
for(;;) {
// Do something forever
}
代码与WISH循环完全相同。两个分号
只是意味着初始化器,条件测试和迭代器
是void i.e.它们不存在。编译器只是离开了这些部分
出来,所有剩余的都是汇编器跳回指令。所以
循环永远继续。这些循环结构中的任何一个都可以在Arduino代码中使用。
被称为无限循环,但这真的只是符合资格
程序的一生。这是从开始时间,当你的时候
应用电源或按复位。当权力是显然结束
再次删除或休息。
所以回答这个问题
"在Arduino IDE中运行了多少次循环函数"
答案是 -"it depends!"
这取决于arduino(16MHz)的晶速。这是定义的
可以执行每秒的指令。这取决于
关于电力的应用程度。最后一个因素是多少代码是
在主循环()内执行。
这取决于:
在循环()内添加更多指令时,必须执行模式代码,以便循环时间增加。
您可以测量循环时间。使用微秒计时器但是
收集变量中的数据,然后计算平均值。如果你使用
测量中的序列声明声明它将给出更大的
时间段 - 因为该代码本身需要很长时间。
为此,添加100次循环后打印出数据的条件。
然而,即使是测试本身也需要时间,但这将是一个小的
如果主代码很大,则时间的比例。
使用ADS1115精度16位ADC进行教程进行低功耗。
arduino.模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。
了解DigitalWrite()的工作原理......现在使用17倍宏宏!
如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。
使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。
HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。
新的! Comments
让你说到你刚刚阅读的东西!留下下面的框中的评论。