中華製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)
を選択すれば書き込めるようになるはずだ。
長文になってしまったので、再起不能になった場合については明日の記事で。
最近のコメント