概要

Arduinoでは、リセットボタンを押すと初期化がされ、setup()の関数がコールされますが、リセットボタンを押さずにコード上だけでリセットをさせたいときは、アドレス0を指定して実行をする方法があります。

参考: https://www.instructables.com/two-ways-to-reset-arduino-in-software/

コード例

void setup() {
Serial.begin(9600); Serial.println("started"); } void(* resetFunc) (void) = 0; //declare reset function @ address 0 void loop() { delay(1000); resetFunc(); //call reset Serial.println("never happens"); }

resetFunc()を呼ぶと、Arduinoがリセットされ、setupから実行されます。

Arduino

Related Posts

ROSのPythonで他のサービスが立ち上がるまで待つ方法
ROSのPythonで他のサービスが立ち上がるまで待つ方法
ROSでパッケージを作成する時に他のサービスが発行するトピックに依存している時など、他のサービスが立ち上がるまで待つ必要がある時があります。 その場合、wait_for_service()関数を使用することで実現できます。この関数は、...
Read More
ROSのLaserScanデータの一定角度の範囲を無視する方法
ROSのLaserScanデータの一定角度の範囲を無視する方法
ROSでLidarセンサーを使う時、ロボットの車体など一定角度の範囲に常に障害物があり、これを無視したい時があると思いますが、その方法を紹介します。 以下は、得られた/scan_rawトピックのデータの一定角度の範囲を無視して新しい/...
Read More
ROSのmove_baseで、Pythonからコストマップをクリアする方法
ROSのmove_baseで、Pythonからコストマップをクリアする方法
move_baseを使っていると、障害物が無いのにコストマップで障害物判定されてしまうことがあります。そのようなときは、コストマップを一度クリアしましょう。 コマンドから   move_baseノードには、コストマップをクリアする方法...
Read More