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