Arduino 中停止循环

Ammar Ali 2023年10月12日
  1. 使用 Sleep_n0m1 库停止 void loop()
  2. 使用 exit(0) 停止 void loop()
  3. 使用无限循环停止 void loop()
Arduino 中停止循环

本教程将讨论在 Arduino 中停止循环的方法。Arduino 中有两种循环:一个是默认情况下提供的 void loop(),而另一个是用户在其中创建的。用户创建的循环可以使用 break 方法轻松结束。要结束 Arduino 的 void loop(),可以使用以下方法。

使用 Sleep_n0m1 库停止 void loop()

上面的方法可能适用于所有 Arduino 板,但是 Arduino 将继续使用电源。使用 Sleep_n0m1 库,你可以将 Arduino CPU 置于永久睡眠状态,直到你手动或使用计时器对其进行重置。请注意,这可能不适用于所有 Arduino 开发板。

#include <Sleep_n0m1.h>
Sleep sleep;
unsigned long sleepTime;  // how long you want the Arduino to sleep

void setup() {
  sleepTime = 50000;  // set sleep time in ms, max sleep time is 49.7 days
}

void loop() {
  // Your Code
  sleep.pwrDownMode();          // set sleep mode
  sleep.sleepDelay(sleepTime);  // sleep for: sleepTime
}

完成代码后,请确保使用 Sleep_n0m1 库。这种方法只会消耗一点能量。使用此链接了解更多详细信息。

使用 exit(0) 停止 void loop()

可以在代码后使用 exit(0) 方法来结束 Arduino 的 void loop(),但是请注意,Arduino.cc 没有提供任何方法来结束此循环,因此该方法可能不起作用适用于所有 Arduino 开发板。

void loop() {
  // All of your code here

  // exit the loop
  exit(0);  // 0 is required to prevent error.
}

请注意,exit(0) 之后,你的 Arduino 将停止工作,直到你手动将其重置。因此,请确保在代码完成其任务之后使用此方法。

使用无限循环停止 void loop()

上面的方法可能不适用于所有的 Arduino 板,因此我们必须使用另一种方法。无限循环方法将适用于所有 Arduino 板,但是 Arduino 将保持清醒状态并继续消耗功率。在此方法中,你可以在代码后插入无限循环。Arduino 将处理你的代码,进入无限循环并停留在那里,直到你手动将其重置。

void loop() {
  // All of your code
  while (1) {  // infinite loop
  }
}

如果 Arduino 进入无限循环,它将在你重置它之前不会返回,因此请确保在完成代码后使用无限循环

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook