成为订阅者(免费)

加入29,000名其他订阅者以获得用户销售折扣和 其他免费资源。
:
:
大学教师'担心 - 您的邮件地址完全是 安全的。我保证使用它 只要 to send you MicroZine.

龙头的arduino

循环的Arduino是那些面包和黄油功能之一 您将在代码中的所有时间使用。微控制器很好 在重复的任务中,而是写出许多代码 时间,for-循环重复一段代码特定数字 of times.


在哪里使用循环

您可以在函数内的任何地方使用循环,所以您可以 在标准的Arduino Setup()和循环()函数中使用它们,内部 your own functions.

以下示例显示了循环循环的循环 打印数字0到9.它被放入Setup()函数中 由于您只想一次执行for-loop操作 - 否则 如果将其放在循环()中将其放置在循环()中,它将重复输出 信息 - 让你旋转(试试吧,看)!

将代码复制到Arduino IDE中。编译并运行程序。启动串行监视器以查看输出。

此代码显示了 arduino循环示例 用for循环 本身在setup()函数中。这不是你应该的地方 通常使用一个for循环(你可以虽然) - 它只是这里停止 multiple output.

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.如何运用循环工作

循环的Arduino提供了一种重复一节的机制 代码取决于变量的值。所以你设置了初始 变量的值,退出循环的条件(测试变量),以及动作 每次循环周围的变量。

初始化部分: 控制变量的初始值。
条件部分: 停止循环的条件。
迭代器部分:
循环变量动作(递增或递减)。

这三个元素是for循环的参数,并通过分号分隔:

为了 (<初始化者 代码> ; <condition 测试 表达> ; <迭代器 表达> ) {
   <body code>
}

arduino.循环计数器控制变量

关于循环的其他重要点是它们需要一个循环控制变量 - 在示例中 这是变量i。这用作循环计数器,用于决定何时退出循环。

先前所示的代码是写入循环的标准方法 其中循环变量以零开始,递增10次。
for (在 t i=0; i<10; i++) Serial.println(i);
笔记: 的价值'i'从0到9,循环中的10次。
笔记: 的价值'i'循环完成后是10.一点点 反向直观,但要留在循环中,'i'只能从0到 9,10次退出。你可以使用'i'在后面的代码中变量也是如此。

arduino的参数循环

初始化

INT I = 0;

首先是变量'i'创建(如果它尚未存在)并设置为零。

FOR-LOOP的这一部分仅在开始时执行一次。

测试

i < 10;

接下来,测试循环变量。这里,如果它小于10,则继续 - 否则循环被退出。

这是每次在循环周围执行的。

迭代器

I ++;

环路控制变量(环路计数器)增加一个。

这是每次在循环周围执行的。

arduino循环输出

因此for-循环执行代码"Serial.print(i)"价值10次'i'经历0到9。

这是输出:

arduino. for loop
0
1
2
3
4
5
6
7
8
9
要查看为什么要从零启动控制变量,您应该查看 the section on 阵列和循环.

出于不同的方法,您可以允许控制变量从1到10更改。
for (在 t i=1; i<= 10. ; i++) Serial.println(i);
这将打印出1到10。它仍然是10个迭代,但从1开始。

笔记: 这里 'i'范围为1到10即循环10次。

在循环代码的末尾(外部卷曲括号)的值'i' will be 11, because when 'i'达到11个声明'i<=10' is false so the loop is exited.

笔记: 这次在循环结束时,'i' has the value 11.

arduino. for-loop身体代码

for循环的主体可以是块的单一语句 卷曲括号之间的代码。所以你可以写下循环,如下所示:

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

测试自己

问:这里'对你有个问题。循环执行后我的值是多少?

的价值i is (click to find out) 我有值7以来留在循环中'i' had to be smaller 超过7.当我等于7时,满足条件以退出循环。

问:另一个问题。你可以在程序中使用我吗?

我稍后可以使用变量吗? (点击查看) 是的你可以。它是一个标准变量,就像任何其他一样。它是 最好不要经常这样做,因为你想要保持变量'i' 只是为了循环。这只是您记住这一点的便利 the variable 'i''可以在整个代码中使用其他循环。

如何设置循环计数

您可以通过更改所有三个来创建一个用于依赖的循环 用于循环中的参数。让我们说你想要从10到1倒数 (循环中的十个迭代)。

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

测试自己

问:这里'对你来说同样的问题。循环执行后我的值是多少?

的价值i is (click to find out) 我有值0'i'必须大于或等于1留在循环中。

循环阵列示例的Arduino

您在零中以控制循环变量开始的原因是 该数组从索引零开始定义。如果你不'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个值。阵列使用更容易的原因 这是阵列从 索引零.

提示: 最好使用Arduino的标准形式循环 您从未错误地访问数组值。

标准表格是:

   for (在 t i=0; i<10; i++) {
      <block of code to execute>
   }

在循环代码的末尾(外部卷曲括号)的值'i' 将是10,因为什么时候'i'达到10个声明'i<10' is false 所以循环被退出。

笔记: 在循环结束时'i' has the value 10.

初始化循环

在上面的示例中,For-Loop初始化代码使用如下:
在 t i=0;
变量均声明并初始化 - 这是一个C ++功能。

在C代码中,您可以'T声明循环狭窄内的变量。它必须在for循环之外声明。

这是因为C的Compers希望在搞乱之前分配的所有RAM 围绕创建固定程序代码。在C ++中额外的阶段 处理允许在飞行中分配RAM和程序数据。所以 for pure 'C' code you will find:
void myFunction(void) {
在 t i;

   for(i=0;i<10;i++) {
      Serial.println(i);
   }

   for(i=10;i>0;i++) {
      Serial.println(i);
   }
}


笔记: 您可以在C ++代码中使用任何形式,即arduino编码时。

你可能想要 尽可能按照标准C表格'T在两次中声明一个变量 相同的代码块。因此,如果您将某些循环代码复制并粘贴到现有 代码,您必须回顾并删除额外的声明。 那个或等待编译器抱怨,它将是它!

常问问题

循环函数运行多少次

一个问题是:

    "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)的晶速。这是定义的 可以执行每秒的指令。这取决于 关于电力的应用程度。最后一个因素是多少代码是 在主循环()内执行。

这取决于:

  1. 处理器时钟速度,
  2. 应用电力多长时间,
  3. 循环中的代码是多少()。

在循环()内添加更多指令时,必须执行模式代码,以便循环时间增加。 

测量循环时间

您可以测量循环时间。使用微秒计时器但是 收集变量中的数据,然后计算平均值。如果你使用 测量中的序列声明声明它将给出更大的 时间段 - 因为该代码本身需要很长时间。

为此,添加100次循环后打印出数据的条件。 然而,即使是测试本身也需要时间,但这将是一个小的 如果主代码很大,则时间的比例。


新的! Comments

让你说到你刚刚阅读的东西!留下下面的框中的评论。




隐私政策 | 接触 | 关于我

网站地图 | 使用条款


ezoic.报告此广告

访问我们的Facebook页面:

   点击这里



最近的文章

  1. 如何使用ADS1115

    使用ADS1115精度16位ADC进行教程进行低功耗。

    阅读更多

  2. arduino.模拟输出...易模拟输出生成

    arduino.模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。

    阅读更多

  3. 数号和等效的快速宏。加快代码!

    了解DigitalWrite()的工作原理......现在使用17倍宏宏!

    阅读更多

  4. TCS230颜色传感芯片:如何运作以及如何使用它。

    如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。

    阅读更多

  5. 如何使用ADXL345进行运动感测等。

    使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。

    阅读更多

  6. HMC5883L 3轴数字MAGENTOMTER如何运作

    HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。

    阅读更多



读者 Comments

"I wanted to thank
你这么好
对于所有信息
你已经提供了
你的网站's

高超极好的."

- 逃亡Potthath.

"This site really is
最好的和我最喜欢的。
我发现这里有很多很有用
项目和提示。 "

- 米兰

Bursach.<at>gmail.com<

"Awesome site,
非常,非常容易和好
导航!"


-
镭_tr.<at>
wolf359.cjb.net.


学习微控制器

"Interested in
微控制器?"

注册
免费7天指南:

自由 GUIDE : CLICK HERE


"I am a newbie to PIC
我想说
 how great your
网站一直在为我。"


- 戴夫

de_scott.<at>bellsouth.net

"Your site is a great
和完美的工作。
恭喜。"


- SURESH.

IntegratedInfosys.<at>
Yahoo.com.

"I couldn't find the correct
要定义的词语
你的网页。

非常有用,揭开,
诚实明确。

非常感谢
你的时间和作品。
问候。"


- Anon.

回到顶部