BS21 Lab の製品 - Arduino 用 漢字 LCD シールド - Arduino Due での動作

11/feb/2013 新規
7/aug/2014 更新


2014年8月7日追記:
2014年7月7日に Arduino IDE 1.5.7β が出ました。Wire ライブラリが修正されましたので、そちらを使用すれば、以下の問題は解決します。 ただし、漢字 LCD ライブラリ v1.10 以降を御使用ください。

2013年11月29日追記:
2013年11月28日に Arduino IDE 1.5.5β が出ましたが、Wire ライブラリはまったく修正されていないので、以下の記述は 1.5.5 にも当てはまります。

2013年9月3日追記:
2013年8月30日に Arduino IDE 1.5.3β が出ましたが、Wire ライブラリはまったく修正されていないので、以下の記述は 1.5.3 にも当てはまります。


2013年2月11日現在、以下の組み合わせにて、Arduino Due に(試験的に)表示させる事が出来ました。
注意!!:漢字 LCD シールドを 3.3V 仕様にする必要があります。(詳細は 3.3V について を参照)

・Arduino Due (Atmel SAM3X8E:CLK=84MHz)
・Vcc = 3.3V, Vdd = 5V
・Arduino IDE 1.5.2
・Windows 7 Home Premium SP1 (64 bit)

Arduino Due +漢字LCDシールド


ただし、幾つか問題がある事も判明しました。

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 ピンはアナログ入力機能のみです)。
Arduino UnoArduino Mega2560Arduino Due
WireA4/A5 及び R3 追加ピンソケット20/21番ピンソケット20/21番ピンソケット
Wire1------R3 追加ピンソケット
現在の「漢字 LCD ライブラリ」は Wire で決め打ちになってます(今までこれ1つしか無かった為)ので、Wire1 に対応する様に修正する必要があります。
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 が追加されました。

現在の「漢字 LCD ライブラリ v1.01」ですが、Arduino IDE 1.5.2 でコンパイルしようとすると 100%エラーになるので、修正しなければならないのですが、 上記の通り、Arduino IDE 自体が流動的(1番はほぼ確定でしょうが)なので、どうしたものか判断に悩んでいます。特に2番の方針が決まらない事には、 「漢字 LCD ライブラリ」の方も、どう修正したら良いのか決めかねています。

上の写真のは、試験的に作った「漢字 LCD ライブラリ」で表示させています。Wire を Wire1 に置き換えたりと、あれこれ変更してしまったので、 今度は Due 以外でコンパイルが通らなくなってしまいました。さて、どうしたものか・・・


Arduino 用 漢字 LCD シールドに戻る

Copyright (C) 2013-2014 BS21 Lab, All rights reserved.