web-dev-qa-db-ja.com

Arduinoボードを「リセット」する方法は?

sketch をArduino Unoにアップロードしました。そのループは次のようなものです。

void loop(){
    Serial.println("Hello World");
}

だから、IDEは「ポートはすでに使用されています」と言っているので、もう何もアップロードできません。

別のプログラマーなしでArduinoを「リセット」する方法はありますか?

編集:
シリアルポートを使用しているものは他にありません。以前のスケッチをアップロードするまで、すべてがうまくいきました。

編集:
いくつか面白いことが見つかりました。

21
dugres

以下を試してください:

  1. 基本的な空のプログラムを準備します(空のセットアップ、ループなど)
  2. コンパイルします。
  3. チップ上のハードウェアボタンを使用してArduinoをリセットします
  4. 押す Ctrl + U コードをアップロードします。
  5. 失敗した場合-3になりました。

ブートローダーがプログラムを開始するまでに遅延があります。タイミングに合わせて作業してください。 Arduinoのコードのバグが500ミリ秒ごとにソフトリセットを実行していたとき、私にとってはうまくいきました。

24
Valed

2台のArduino(1台のUnoと1台のModern Device Freeduino/USBホストボード)で同じ問題が発生し、リセットからシリアルポートの使用開始までのウィンドウが非常に小さいため、アップロードできませんでした。

最後に別のArduino Unoを購入し、 これらの手順 ごとにISPケーブルを構築し、それを使用して、Arduino IDE version 0023、 これらの手順 に従い、preferences.txtを変更します(Arduinoをレスキューした後に置き換えることができるように、編集する前に必ず元のファイルを保存してください)。

各ボードを修正するには、1回の簡単なアップロードが必要でした。非常に多くの悲しみの後、このような迅速な修正。別のArduinoを購入したくないかもしれませんが、これらの利点を考慮してください。

  • Arduinoのブートローダーを上書きして、スペースを増やすことができます。
  • ブートローダーが上書きされると、ボードはより速く起動します。
  • おそらく、特別なプロジェクト用に生のAVRをプログラムできますが、私はこれを試していません:Google for ArduinoISP
  • 将来ブロックするArduinoを迅速に修正します。
  • これで、今後シリアルポートの使用がデバイスをロックするのを防ぐ方法を見つけるために安全に実験できます。
5
Sean Sheedy

Arduinoをハブではなくコンピューターに直接接続してください。ハブを使用すると、このエラーが発生します。

2
user2630109

この問題について頭を悩ませた後、いつでも動作する非常に簡単なソリューションを次に示します。

  • USBケーブルを抜きます
  • DEVICE MANAGERに移動します
  • ポート(COMおよびLPT)をクリックします
  • Arduino ....(COMx)を右クリックします
  • 物性
  • ポート設定
  • フロー制御を[〜#〜] hardware [〜#〜]に配置
  • 空のスケッチを作成する(*オプション)
  • USBケーブルを接続する
  • アップロード(Ctrl-U)

// Emtpy Sketch to fix upload problem
// Create by Eric Phenix
// Nov 2014

void setup() 
{ 
} 

// the loop routine runs over and over again forever:
void loop()
{ 
delay(1000);                            
}

出来上がり!エリック

1
Eric Phenix

すでに使用されているかブロックされている通信の経験に基づいて、インターフェイスしているプログラムはまだ通信が開いていると言います。また、USBケーブルを外すと通信が停止することもわかりました。それは最大の解決策ではありませんが、問題を解決します。それがお役に立てば幸いです。

1
jklmuk

私はこの問題の解決策を探すために最後の5時間を費やしました(シリアルポートCOM3はすでに使用されており、シリアルポートはグレー表示されています)...

何が最終的にそれを修正しました(立ち往生して単純な点滅機能をアップロードした入力した最後のコードを取り除きましたか?)このリンクをたどってください- http://arduino.cc/en/guide/windows ドライバーのインストールの指示に従ってください。私のドライバーは「すでに最新」でしたが、これらの手順に従うと不具合が修正されました。私は今再び幸せなキャンピングカーです。

注:チップ上のボタンを使用してボードを手動でリセットするか、その他の方法でデジタル的にリセットします。私のarduino unoとラップトップのポートの間で信号が何らかの形でブロック/混同されたため、インターネット上のコードはこの問題を解決するために機能しませんでした。ドライバの更新は、「すでに使用されているシリアルポート」問題のリセットのようなものです。

少なくとも今のところ..

1
Sard

同様の問題が発生しました。

Myarduinoの電源をオンにすると、アップロードされたプログラムの実行前に遅延が発生します。

だから私は新しいプログラム、または空のプログラムをアップロードするためにその遅延を使用します:

void setup(){} void loop(){}

私の問題は解決しました。

アップロードする前に、arduinoピンへの接続を取り外します。

0
user599115

シリアルコンソールを開いたままにすると、シリアルポートが予約されます。閉じて、もう一度やり直してください。

ポートに「Already used」と表示されている場合は、おそらく間違ったポートを使用しています。 arduinoを接続していたポートに切り替えてから再アップロードを試みると、間違いなく機能することがわかります。

0
Tgold brain

今日もまったく同じ問題がありました。この問題を解決するために見つけた簡単な解決策は次のとおりです(Anghiaraに感謝)。

画面の「アップロードボタン」(緑色の矢印の付いた円)を使用して新しいコードをarduinoにロードする代わりに、マウスを使用して「スケッチ」をクリックしてから「アップロード」をクリックします。

Serial.println()とループを使用するときは、コードにdelay()行を追加することを忘れないでください。私はレッスンを苦労して学びました。

0
Pablo Guzmán

Arduino Leonardo Board

  1. USBケーブルのプラグを抜きます
  2. Rxピンをグランドに接続する
  3. USBケーブルを差し込みます
  4. 新しいプログラムをアップロードする
  5. USBケーブルを取り外す
  6. Rx接地を削除する

私にとってはうまくいくと思います。

0
PcTronics

私もこの問題を抱えていて、上記の方法を試しましたが、どれもうまくいかないようでしたが、うまくいくものがありました(どういうわけか、それが単なる変なものであるか、実際にそれを行う方法であるかはわかりません)

  1. DuinoからUSBを取り外します
  2. リセットボタンを押し続ける
  3. USBを接続して電源を入れる
  4. そのまま保持してスケッチをアップロードします。アップロードが完了したら、リセットボタンを放します。
0
Keith

Arduino Yunユーザーの場合、Ethernet/WiFi(ツール->ポート)でアップロードしてみてください。私はまったく同じ問題を抱えていたので、ほとんどすべてを試しました(新しいブートローダーの書き込みは別として)。私はそれがうまくいったことに驚いていますが、空のスケッチを問題なくアップロードしました。

0
lokers

何も助けない場合は、ここに示すようにもう1つのボードを配置し、ISPオプションとしてArduinoを介してフラッシュしてみてください https://www.arduino.cc/en/Tutorial/ArduinoISP または https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard 。ブートローダーの代わりに、ISP経由でフラッシュする独自のプログラムを選択できます。

0
Rijo Kuriakose

これは、USBで接続したときに0キーを送信するループでスタックしたArduino MicroをプログラムできるようにするためにLinuxで行ったことです。

# while true; do xinput float $(xinput --list | grep -i Arduino | awk '{print $7}' | cut -d'=' -f 2); done

出力が少し異なる可能性があるため、実行してみてください。

# watch xinput --list

次に、Arduinoを接続して、出力のフォーマットを確認します。

これにより、Xがキー入力を受け入れなくなり、Arduino IDEが最終的にプログラムできるようになりました!

0
james

端末からシリアルポートにアクセスしていないことを確認してください。そのループ(またはコード)によってArduinoのプログラミングが妨げられてはなりません。

0
Chiva