今日の大きな考え事

参考にしていただけそうなことを中心に、いろいろ紹介しています。

今まで使えていたArduinoが突然書き込みできなくなった時に、試してみたい事

 

先日、今まで実用できていたArduinoのスケッチ(プログラム)をアップデートしようとしたところ、書き込みできなくなる事がありました。

同じ症状が突然発生した方の参考になるかもと思い、備忘録として残しておきます。

なお、真因を特定するほど詳しくはないので、症状と復旧した対策の事実のみを、簡潔に紹介いたします。

f:id:solocamptouring:20181019051440j:plain

 

Arduinoにスケッチを書き込みできなくなった

Arduino nanoの互換品を使用していて、それまでは問題なく使えていたスケッチが、これも使い続けていたArduinoに、書き込みできない事態が発生しました。

他のスケッチでも試してみましたが、同様に書き込みできないので、スケッチの問題ではなさそうです。

 

症状1

最初に症状が現れたのは、いつも使っているモバイルパソコン(レノボ YOGA BOOK)でした。

IDE画面の検証ボタン(レ点マーク)では問題なくコンパイルが終了しますが、マイコンボードに書き込むボタン(右向きの矢印マーク)では、コンパイルは終了するものの、書き込みを開始したところで止まってしまいます。

試しにCH340Gドライバーをインストールしなおしても、書き込みできないままです。

とりあえず、モバイルパソコンからArduinoに書き込むのはやめて、時間が解決してくれるのを期待してみることにしました。

症状2

いつも使っているモバイルパソコンからはArduinoへの書き込みができなくなったので、もう一台のデスクトップパソコンで書き込んでみたところ、問題なく書き込みができました。

ところが次の日に、同じデスクトップパソコンで、定数だけ変更した同じスケッチを書き込もうとしたところ、今度は検証(コンパイル)時にエラーになります。

スケッチは、void loop(){.....}の後で、void xxxxx(){......}関数を定義して、loop内でxxxxx()を使っているものです。

コンパイル時のエラーは、和訳すると「loop内で使われているxxxxxなんて知らないし!」という内容です。

何度もスケッチを見直して見ましたが、「;」や「{ }」が抜けていることも無く、また前日まで問題が無かったので、スケッチは正常だと思われます。

Arduino IDEがインストールされているパソコン2台が、現象は違いますが共に使えなくなってしまい、途方にくれました。

対策

Arduinoに書き込みできない原因として、Arduino IDE自体が怪しくなってきたと思い、問題なく使えていた時との違いについて、しばらく考えてみます。

ふと、最近プロセッサの選択肢に目が止まった事を思い出しました。

使っているArduino nano(互換品)は、ATMega328Pを使っていますが、Arduino IDEのプロセッサ選択肢には、

  • ATMega328P
  • ATMega328P(Old Bootloader)

の2種類があり、この時点ではATMega328Pが選択されています。

この2種類の選択肢が以前から有ったかは覚えていないものの、新旧の選択肢があるという事が気になります。

試しに「ATMega328P(Old Bootloader)」プロセッサに選択変更してみたところ、パソコン2台ともに、あっさりと書き込みできるようになりました。

  1.  Arduino IDEのプロセッサの「ツール」を選択
  2. 「プロセッサ」を選択
  3. 「ATMega328P」から「ATMega328P(Old Bootloader)」に選択を変更

書き込みできなかった真因はわかりませんが、これで一件落着して、今までどおりにArduinoを楽しむことができるようになりました。