プラロボホンの改造その8
2017年5月13日
5月18日改訂
5月24日改訂
6月13日改訂




 今回はプラロボホンの拡張ユニットに液晶ディスプレイ(LCDキャラクタディスプレイモジュール)を付けて文字を表示してみました。
 取り付けたのは超小型LCDキャラクタディスプレイモジュールで横16文字を2行表示できます。
 アルファベット以外に半角カタカナが表示てきます。
 同様のものはいろいろな種類がありますがこのタイプはバックが青で文字が白のものでバックライト付きです。



 通常の液晶のタイプもありますので好みによって選んでください。
 ただarduinoの5Vで動かしたいので動作電圧が5Vの物を選んでください(3.3Vのものもあるようです)。
 またarduinoで簡単に動かせるようインターフェイスがHD44780コンパチのものを選ぶ必要があります(通常このタイプはコンパチになっています)

 今回選んだ機種は使用するに当たっては注意する必要があります。
 バックライトが付いているのですがそのままだとバックライトの機能は動作しません。



 ジャンパーパターンJ3にハンダを盛って短絡します。
 秋月で買うと100Ωの抵抗が付いているのでR9にハンダ付けをします。
 バックライトを点けないと暗くて文字がはっきりしないので最初から付けておいて欲しいものです。
 なおバックライトを使わない機種や何もしないでバックライトが機能する機種もあるのでその場合はこの作業は必要ありません。

 arduino nanoを使用した配線図を示します。



 LCDディスプレィとの配線で注意する点としてはLCDの3ピン(右から5番目橙線)のコントラスト調整端子に可変抵抗の真ん中の端子を接続します。
 可変抵抗にはLCD電源とGNDを接続して電圧を変化させます。
 可変抵抗の抵抗値はデーターシートには20KΩとありますが手持ちがなかったので100KΩで試したのですがちゃんと機能しました。
 可変抵抗がない場合の応急処置としてこのピンをGNDに接続しても表示されるようです。
 ただし正面からはちゃんと見えないので上方向から見ると文字が確認できます。

 ロビのマイコンボードとarduinoの接続はロビのシリアルバス(I2C)に接続します。
 ロビのシリアルバスはボード間を接続する4本の黒いケーブルですが上の配線図は音声認識ボードと接続していますがどの基板のコネクターと接続しても構いません。
 なおロビの場合、シリアルバスのコネクターはすべてケーブルが接続されているのでarduinoと接続する場合は下の写真のように分岐ケーブルを作成する必要があります。



 arduino nano以外の機種を使用する場合や他の機種のLCDディスプレィを使用する場合はピン位置が異なりますのでその場合はそれぞれのデータシートを参考にしてください。



 今回作成したスケッチ(arduinoプログラム)は下記のURLよりダウンロードしてください。

 Robi_lcd.zip

 オリジナルのSoftI2CMaster.hではスケッチのコンパイルエラーが起こります。6月13日以前にダウンロードされた方はもう一度ダウンロードしてコンパイルし直してください。

 I2Cのデータを取得するのにSoftI2CMaster.hという標準以外のライブラリィを使っています。
 I2Cのデータは標準のWireライブラリィでも取得できますが以前ロビの認識語を取得した時にarduinoがすぐにハングアップしたのでこちらを使用しています。
 C:\Program Files\Arduino\librariesに添付のlibrariesフォルダーのSoftI2CMasterフォルダーごと入れてください。
 なおArduinoのインストールディレクトリィは64bit OSの場合はProgram Files(x86)です。

 RobiLCDKanaは認識語をカタカナで表示します。
 16文字を越える場合は2行に分割して表示されます。

 RobiLCDEnglishは認識語を英語で表示します。
 16文字を越える場合は2行に分割して表示されます。  その際、単語の途中で分割されないようにスペースの位置で分割しています。

 なおarduinoのメモリ上の制約でいくつかの認識語(44〜85,130〜198,215〜246,252〜)は???で表示されます。
 またこのスケッチでは256以上の認識語を取得できませんが別のレジスター(32)を参照すれば取得することができます。

 興味のある方はこちらの記事を参考に修正してみてください。

 LCDに半角カタカナを表示する場合はスケッチに直接書く文字化けしますので全て16進コードRobiLCDKanaでは定義しています。
 LCDに表示するコードはJIS_X_201というコードで定義します。  コード表はこちらを参照してください。

 メモリの制限および255以上の認識語に対応してすべての認識語を表示できるようスケッチを変更しました。
 以前のスケッチを使用されている方はもう一度ダウンロードし直してください。



 実際に動かしている動画です。

   

 今回はプラロボホンの改造で行いましたがもちろんロビにもそのまま適用できます。
 なお今回行った作業はハンダ付けによる作業が含まれ配線を間違えるとロビのマイコンボードや音声認識ボードの破損を伴いますのであくまでも自己責任という事でお願いします。



 ロビで行う場合は、音声認識ボードとリモコンボードを接続するシリアルケーブルを分岐させてarduinoに接続できます。



 ロビで動かしている動画です。

   

   

 目のLEDのRGB値を表示するスケッチとメッセージを表示するスケッチおよびロビのプログラムも上記URLからダウンロードできます。

 RobiLCDRGBは目のLEDのRGBを表示します。
 上段が左目のRGB値で下段は右目のRGB値でR(赤)、G(緑)、B(青)の順で表示されます。

 RobiLCDMsgは目のLEDのRGBを文字に変換して表示します。
 表示するメッセージの文字コードで左目と右目のRGB値で指定します。
 LCDに表示するコードはJIS_X_201というコードで定義します。  コード表はこちらを参照してください。

 一度に転送できるのは6文字で0x0a80〜0x0a8aに書き込みます。
 表示する位置は口LED(0x0a8c)の値で指定します。
 位置は0〜31で16以上はLCDの下段に表示されます。
 なお0の位置に表示すると現在表示中の文字をすべてスペースに置き換えます。

 ロビプログラムはこのスケッチでメッセージを表示するサンプルです。
 各文字列(6文字)間の間隔はwait data命令で設定しています。
 サンプルは120(2秒)で設定していますがarduinoがデータを受け取れない場合はこの値を大きくしてください。

   

 ジャイロセンサーの値を表示するスケッチとメッセージを表示するスケッチも上記URLからダウンロードできます。
 RobiLCDGyroはのジャイロセンサーの値を表示します。
 なお表示される値はロビのマイコンボードのメモリ(0x0e02〜0x0e07)で取得される値で実際の角度とは異なります。

目次に戻る