11/feb/2013 新規
7/aug/2014 更新
1. | Wire ではなく、Wire1 を使わなければならない。 | ||||||||||||
Arduino Due は TWI が2チャンネル有りますので、TwoWire クラスのインスタンスも2つあります。
1つは従来の Wire で、もう1つが Due で追加になった Wire1 です。この内、Wire の方は pin20/21 を使用(つまり Mega2560 互換)して TWI 通信を行います。
一方、Arduino xxx R3 以降で追加になった SCL/SDA ピンソケットは、Wire1 を使用しなければなりません(当然ながら Due では、A4/A5 ピンはアナログ入力機能のみです)。
| |||||||||||||
2. | Arduino IDE 1.5.2 付属の Wire ライブラリにバグ(?)が有る。 | ||||||||||||
TwoWire::endTransmission 関数の戻り値が、AVR 版と Due 版で全然違っています。AVR 版は正常終了ならば 0 が返されますが、Due 版では常に 0 以外が返されます。 ([Due] (I2C) Wire.endTransmission always returns non-zero. ・ Issue #1251 ・ arduino/Arduino ・ GitHub を参照) この為、endTransmission 関数のエラー処理部分の互換性が確保できません。このバグ(?)、修正されるのかされないのか、修正されるならいつ修正されるのかは、現在不明です。 | |||||||||||||
3. | avr/pgmspace.h が無い。(Arduino IDE 1.5.2 のみ) | ||||||||||||
Arduino IDE 1.5.2 で Arduino Due を選んでコンパイルしようとすると「avr/pgmspace.h が無い」といわれます。当然ながら PROGMEM や xxx_P/pgm_read_xxx 関数も有りません。
pgmspace.h is not supported? - Arduino Forum では、
ダミーの avr/pgmspace.h の追加方法が書かれていますが、一方で、ARM なのに AVR 特有のファイル名が有るのは変、との意見もあるようです。 ⇒ Arduino IDE 1.5.3 でダミーの avr/pgmspace.h が追加されました。 |