多くの場合、プレートを扱うときは Arduino Unoデバイスがアクセスしにくい場所にあるため、またはコード内でプロセスを自動化したいため、物理的な介入なしに再起動する必要があります。幸いなことに、いくつかの方法があります リセットの Arduino Uno ソフトウェアによるそれぞれに独自の利点と用途があります。
この記事では、 Arduino Uno 関数ポインタの使用からデジタルピンを使用した外部リセットの生成まで、コードを通じて実現します。また、 シリアルポート経由で接続すると自動リセットされます プロジェクトで問題が発生した場合にそれを回避する方法について説明します。
リセットイヤー Arduino Uno 関数ポインタを使用する
最もよく使われる再起動方法の1つは Arduino Uno コードから、 関数ポインタ。アイデアは、関数ポインタにメモリ アドレス 0 を割り当てて呼び出し、プロセッサがシステム リセットを実行するようにすることです。関連プロジェクトの詳細については、 のガイド Arduino Uno.
このメソッドの基本コードは次のとおりです。
String letra = "";
int x = 2;
void(* resetSoftware)(void) = 0;
void setup(){
Serial.begin(9600);
Serial.println("Iniciando.");
}
void loop() {
if (Serial.available() > 0) {
letra = Serial.readString();
Serial.println(letra);
if(letra.indexOf("v") > -1){
x = x + 5;
Serial.println(x);
Serial.println("Reseteado.");
delay(500);
resetSoftware();
}
}
}
この場合、文字「v」がシリアルモニターに送信されると、ボードは変数に5を加算します。 xは新しい値を出力し、次に以下を呼び出してリセットを実行します。 リセットソフトウェア()。これにより、リセット ボタンが押されたかのように、マイクロコントローラが初期状態に戻ります。その他のプログラミング方法については、 Arduinoでミリを使用するためのガイド.
リセット Arduino Uno デジタルPINを使用する
ソフトリセットを実行する別の方法は デジタルピンをリセットピンに接続する プレートの。これは、出力ピン (10 など) と Arduino の RESET ピン間の単純な配線によって実現されます。この方法は、ブートローダーを変更せずに迅速な解決策を探している場合に便利です。
このメソッドのコードは次のとおりです。
String letra = "";
int x = 2;
void setup(){
digitalWrite(10, HIGH);
Serial.begin(9600);
Serial.println("Iniciando.");
pinMode(10, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
letra = Serial.readString();
Serial.println(letra);
if(letra.indexOf("v") > -1){
x = x + 5;
Serial.println(x);
Serial.println("Reseteado.");
delay(500);
digitalWrite(10, LOW);
}
}
}
この場合、シリアル モニターを介して文字「v」を送信すると、ピン 10 の論理状態が低下し、ボードがリセットされます。これは、ブートローダー コードを変更せずにソフトウェアからシステムを再起動する必要がある場合の実用的な代替手段です。 Arduinoの接続性についてさらに詳しく知りたい場合は、以下を読むことをお勧めします。 アルドゥイーノナノ.
シリアルポート経由で接続するとArduinoが自動的にリセットされる
プレート Arduino Uno シリアル ポートを介して接続が確立されると、自動リセット メカニズムが働きます。これは、ATmega8U2 チップの DTR ラインが 100 nF のコンデンサによって ATmega328 プロセッサのリセット ラインに接続されているために発生します。 DTR がアクティブになると、リセット ラインにパルスが生成され、Arduino が再起動します。これは、OLEDディスプレイを含むプロジェクトなど、多くのプロジェクトで役立つ機能です。 0.96インチOLEDディスプレイガイド.
このメカニズムにより、 ブートローダー 待ち時間が短縮され、リセットボタンを手動で押さなくても新しいプログラムを簡単にロードできるようになります。ただし、コードが一定のシリアル接続に依存している場合は、これが欠点となる場合があります。
USB使用時に自動リセットを回避する方法
Arduino をコンピューターに接続したときに自動リセットによってプロジェクトの動作に問題が発生する場合は、それを無効にする簡単な解決策があります。プレートには 切断可能な小さなトラック この動作を回避するには。この改造は、電子工学の基礎知識があれば簡単に行うことができます。 ステッピングモータードライバーのガイド.
これを行うには、ボードの下部の USB コネクタの近くにあるトレースを探し、カッターまたはメスで切断するだけです。将来的に自動再起動機能を復元する必要がある場合は、トラック上の 2 つのポイント間に小さなジャンパーをはんだ付けすることで再度有効にすることができます。
自動リセットを無効にする方法を知っておくと、コンピューターからデータを受信したときの Arduino の動作をより細かく制御できるようになります。これらの方法をマスターしてリセットしましょう Arduino Uno これにより、電子プロジェクトの開発における柔軟性が向上し、手動による介入を必要とせずに組み込みシステムの動作の自動化、デバッグ、改善が可能になります。