Arduino Unoのメモリを消去するにはどうすればよいですか?


15

私は息子と一緒にArduinoを勉強しているだけで、USBコードをArduinoに差し込んだときにプログラムがまだ実行されていることに驚いたアップ。"

だから、これらのことで人々がそれを一日と呼ぶ通常の方法は何ですか?あなたは通常、裸の骨をロードしてスケッチを何もしませんか、それとも単にすべてを抜きますか?


4
「USBコードをArduinoに差し込んだときにプログラムがまだ実行されていた」とはどういう意味ですか、どのような動作を観察し、どのような動作を期待していましたか?Arduinoに何か接続されていましたか?
ジッピー14

@jippieええ、たくさんのLEDが差し込まれていて、すべて点灯しました。何らかの理由で私はプログラムがメモリにロードし、再起動時になくなってしまうと思ったが、それが存在しないため....
ピーター・ターナー

7
プログラムはRAMではなくフラッシュメモリにロードされるため、電源を切っても保持されます。
リカルド14

回答:


15

起動すると、Arduinoは最後に置かれたプログラムを実行します。解決策:実行したくない場合は、オンにしないでください。

箱から出してすぐに、Arduinoは通常Blinkプログラムを実行します。そのため、それをロードして、「リセット」したい場合は1日呼び出すことができます。

または、sleepコマンドでループプログラムを使用します。

icspピンを介してUSBブートローダーをいじっていた場合、これでは十分ではありませんが、ブートローダーを再インストールする必要があります。ただし、USB経由で、またはプログラマを直接使用してプログラムをアップロードしている場合は、Blinkまたは他のダミープログラムをアップロードしてリセットしても問題はありません。


電圧端子に何も接続せずに自己破壊プログラムを実行することは可能ですか?
ピーターターナー14

@PeterTurnerそれに力がないとき?いいえ。しかし、ピンを誤用するプログラムを追加することができます。それを残しておけば、損傷を呼び出すことができます(ピンが接続されていない限り、それほど多くはありません)
Manishearth 14

9

安全性が大きな懸念事項である場合は、1日呼び出す前に、ほとんどの場合、ストップ*スケッチをボードにロードする必要があります。たとえば、ボードが半永久的に大規模システムの一部である場合、これは良い考えです。あなたはそうすることができます:

  • File -> Examples-> BasicにあるBare Minimumスケッチをアップロードします
  • ループの遅延が大きいスケッチをアップロードします。
#include <limits.h>

void setup()
{}

void loop()
{
  delay(ULONG_MAX);
}
void setup()
{
   exit(0);
}

void loop()
{}

*停止は単なる比figです。ボードは実際に実行を停止しません。


2
またはexit()から呼び出すことで、同様の(より永続的な)効果を得ることができますsetup()loop()
ピーターブルームフィールド14年

@ PeterR.Bloomfieldそれを忘れたなんて信じられない!
アヒーシュ14年

なぜ出口か遅延のどちらかで悩むのですか?ただ持っているvoid setup () { } void loop () { }-いずれにせよ、内部的には、プロセッサは「何も役に立たない」だけでループしています。
ニックギャモン

1

間違ってしまう可能性のある主なことは、Arduinoを数週間脇に置いて、そこにロードされているスケッチ(コード)を忘れてから、作業を再開し、ハードウェア(スイッチ、LED、モーターなど)を接続することです)そして、以前のコードが接続されていたピンをアドレス指定したため、予期せず点灯/点灯します。


解決策1.最初に新しいコードをロードします。

シンプルで安全な手法は、ハードウェアを接続する前に、現在作業中の新しいコードをロードすることです。これで、コードの機能、使用するピン、そしてハードウェアを後で接続することがわかりました(できればArduino最初にプラグを抜いてオフにします)。

その後、電源を再接続すると、アップロードしたスケッチが実行され、ハードウェアが接続され、すべて正常に動作するはずです。


解決策2.「何もしない」スケッチをロードします。

この短いスケッチをアップロードできます:

int main () { }

「何もしません」。すべてのピンは入力のままなので、ハードウェアを安全に接続して、新しいプロジェクトのコーディングを開始できます。


安全第一

良いルールは、電源が投入された状態でハードウェア(LED、スイッチ、モーターなど)を抜き差ししないことです。気が散ってボードの間違ったソケットに差し込むと、接続しているもの、Arduino、またはその両方がすぐに損傷する可能性があります。

電源をオフにすると、すべてが適切な場所に接続されていること、極性が正しいことなどを最終段階で確認できます。

また、特にジャンパーやふわふわしたものを着ている場合、またはカーペットの上に座っている場合は、体に静電気がかからないようにしてください。

個人的に私は常に手を伸ばし、近くの金属部分に触れて自分自身を「接地」し、その後Arduinoに手を伸ばします。例としては、PCの金属ケース、ヘッドフォンソケットなどがあります。

Arduinoに電源を接続した後(USBケーブルなどを使用)、すぐに電源LEDが点灯しない場合は、すぐに電源を切ってください!あなたは何かを短絡させたかもしれません、そしてあなたがそれをする時間が少ないほど良いです。


1

これが発生したときの最大の懸念は、通常、新しいプロジェクトにArduinoを接続し、新しいスケッチの最初のダウンロードにUSBを接続することです。以前のプログラムが何をしようとしているのか全くわからず、まったく異なるハードウェアに接続されているので心配です。

これまでのところ、何も悪いことは起きておらず、Arduinosの1つをビンに戻すたびにBLINKの書き込みを採用するとは思わない。おそらく時間の問題でしょう。


0

Arduinoボードが他のデバイスに接続されている場合は、すべてを取り外し、USBケーブルを使用してArduinoをコンピューターに接続し、新しいスケッチをアップロードしてみてください。


Arduino SEへようこそ!この回答が他の回答よりも優れている理由はありますか?ありがとう!
匿名のペンギン

0

Arduino IDEで、例に進み、Eepromを選択し、eeprom clearを選択して、スケッチをアップロードします。

ピン13のLEDが点灯すると、完了です。

NB。ArduinoのEEPROMのサイズによっては、これには時間がかかる場合があります。


それで、ポイントは何ですか?I / Oに触れないものを実行します(ただし、電源を入れるたびにEEPROMをクリアします)?
ピーターモーテンセン

実際にこれを試しましたか?ピン13は出力として設定されていないようです(Arduino IDE 1.6.5)
ピーターモーテンセン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.