« 大根の収穫 | トップページ | それが中華製Arduinoだったら »

2018年12月10日 (月)

Arduinoが開発不能になったら

中華製ArduinoNanoを愛用している。ArduinoNanoだったら、マイコンボード1枚が300円以下。なんと送料込みだ。
中華製Arduinoを壊してしまったら、さっさと新品に交換すればいい。
だが開発環境ごとおかしくなってしまうことがある。その復旧方法についてまとめておく。

たとえば今回、ArduinoでI2Cをいじっていたところ、こんな感じのエラーが出た。

In file included from sketch\MechaQMC5883.h:4:0,
                 from sketch\MechaQMC5883.cpp:1:
C:\arduino-1.8.8\hardware\arduino\avr\libraries\Wire\src/Wire.h: In member function 'void MechaQMC5883::read(uint16_t*, uint16_t*, uint16_t*)':

C:\arduino-1.8.8\hardware\arduino\avr\libraries\Wire\src/Wire.h:64:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)
     uint8_t requestFrom(int, int);
             ^

これはArduinoIDEを、1.8.8に更新すれば直るはずだ。

だがなぜかエラーにもかかわらず「コンパイルが完了しました」と表示されてしまう。
コンパイルが完了したので、そのままうっかり転送を選ぶと、もしかしたら再起不能に追い込まれる。
これについては対策は後述、少なくとも明日の記事に書く。

ArduinoIDEを1.8.8に更新したら、コンパイルができるようになる。
だが次のようなエラーに悩まされることになる。

Arduino:1.8.8 (Windows 8.1), ボード:"Arduino Nano, ATmega328P"
最大30720バイトのフラッシュメモリのうち、スケッチが930バイト(3%)を使っています。
最大2048バイトのRAMのうち、グローバル変数が9バイト(0%)を使っていて、ローカル変数で2039バイト使うことができます。

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
    :
    :中略
    :
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
スケッチの書き込み中にエラーが発生しました

再び、Arduinoへの書き込みができなくなる。
これはArduinoIDEを更新したため、相対的にArduinoのファームが古くなったことが原因らしい。
ブートローダを更新すれば直るのだが、そんな人がこんなページを読んでいるとは思えない。
とりあえず、ArduinoIDEから、

Tool→Processor→ATmega328P(Old Bootloader)

を選択すれば書き込めるようになるはずだ。
長文になってしまったので、再起不能になった場合については明日の記事で。

« 大根の収穫 | トップページ | それが中華製Arduinoだったら »

電子工作」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Arduinoが開発不能になったら:

« 大根の収穫 | トップページ | それが中華製Arduinoだったら »

最近のトラックバック