Arduino でループを停止する

Ammar Ali 2023年10月12日
  1. Sleep_n0m1 ライブラリを使用して void loop() を停止する
  2. exit(0) を使用して void loop() を停止する
  3. 無限ループを使用して void loop() を停止する
Arduino でループを停止する

このチュートリアルでは、Arduino でループを停止する方法について説明します。Arduino には 2 種類のループがあります。1つはデフォルトで提供される void loop() で、もう 1つはユーザーが独自に作成するものです。ユーザーが作成したループは、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() を停止する

Arduino の void loop() は、コードの後に​​exit(0) メソッドを使用して終了できますが、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