Arduino 1) Arduino UNO+LCD2004+I2C
2016.11.15
Arduinoを使いこなしたいという願望がありながら、
全く手つかずまま5年以上が過ぎた今日この頃。
小学生ですらArduinoを理解して使いこなしているというニュースが
先日TVで流れていました。軽くショックです。
昔に比べ導入費用も極端に下がったことから
そろそろ私も勉強を始めようかと・・・
本家のArduino UNO R3で800円、
中国の互換機であれば送料込みで350円で買えてしまいます。
吉野家の牛丼並盛(380円)より安いです。
(透明なケースは150円未満)
勉強なので、互換機に手を出すのは成長してからということで、
今は正規品で行きます。
そしてLCD表示にいきなり突撃します(笑)
なぜなら、動作チェックのために、いちいちLチカさせたり、
シリアルモニタで監視するというのも面倒くさいので
内部の詳細情報を液晶に出せたら楽だなと思ったからです。
まずは定番らしい↓のLCDモニタを使います。
スマートエレクトロニクスlcdモジュールディスプレイモニターlcd2004
20*4キャラクタ 5ボルト ブルーバックライト
とにかく安い。送料無料でほぼ400円。
しかもシリアル通信するためのI2Cが付属(ハンダ付け済)。
これがあれば、電源5V、GND含めて計4本の接続で済んでしまいます。
ピン数が限られるArduino UNOには大助かりです。
お急ぎの方はちょっと高めだけどアマゾンでも売ってます。
(アマゾンのはI2Cの種類が違うので若干違うかもしれません。)
液晶側のGNDをArduinoのGNDへ
液晶側のVCCをArduinoの5Vへ
液晶側のSDAをArduinoのAREFの右隣
液晶側のSCLをArduinoのAREFの2つ右
これだけ。ド素人の私にもなんとかついていける!
プログラム側を考えてみる。
どうやら一からコードを書く必要はないらしい。
すでにライブラリが用意されていて、ダウンロードすることで簡単に使えるようだ。
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
ここから最新ライブラリ(現在はNewliquidCrystal_1.3.4.zipが最新の様子)
ArduinoIDEを立ち上げて、これを登録する。
方法は
スケッチ>ライブラリをインクルード>.ZIP形式のライブラリをインストール
と辿って、ZIPファイルを指定するだけでいい。
すると勝手に展開されて、
C:\Users\*******\Documents\Arduino\libraries\NewliquidCrystal
ここに格納される。ふむふむ。なかなかに親切だ。
ではこのライブラリをどのように使うかというと、ちょっとネット検索して悩んだ。
とりあえず、ライブラリをIncludeするのは、ArduinoIDEの機能で一発ポンでできるようだ。
スケッチ>ライブラリをインクルード>NewliquidCrystal
ソースコードの最上部に必要なヘッダコードが追加されましたよ。
これで全ての情報が整ったと思ったらどうやらそうでは無いようだ。
シリアル通信をするためにはチップのアドレスを把握しないといけないらしい。
I2Cのチップをルーペで見てみるとPCF8574ATを使っているようだ。
どうやらチップごとにデバイスアドレスが違うようで、
(上写真は説明用PDFから抜粋です。)
A0,A1,A2ジャンパー部分がすべてオープンになっていることから
ウチのは0x3Fのようだ。
ではコードを書き書き(`・ω・´)
いろんなサイトをめぐり記述方法を調べ、
試行錯誤で以下のコードを作成してみる。
さてコンパイル・・
ボードArduino/Genuino Unoに対応するコンパイル時にエラーが発生しました。
exit status 1
ボードArduino/Genuino Unoに対するコンパイル時にエラーが発生しました。
まじすか・・・
ユーザーコードを書かないで、includeだけでコンパイルしてもエラーがでる。
どうやら自動的に追加された「# include SoftI2CMaster.h 」が悪さしているようだ。
これを外したらうまくいきましたよ。
実際は
#include LiquidCrystal_I2C.h
この1つがあれば、文字を表示するだけなら十分なようだ。
そしてLCD2004の画面は・・・
キター!( *´艸`)
カーソルの動きも、バックライトの点滅、スクロール等、すべて動いてます。
スクロールは、2行単位で上下入れ替わる謎の現象が起きてますが、
使うことはないので、良しとします。
これでやっと次のステップへ進めそうだ
全く手つかずまま5年以上が過ぎた今日この頃。
小学生ですらArduinoを理解して使いこなしているというニュースが
先日TVで流れていました。軽くショックです。
昔に比べ導入費用も極端に下がったことから
そろそろ私も勉強を始めようかと・・・
本家のArduino UNO R3で800円、
中国の互換機であれば送料込みで350円で買えてしまいます。
吉野家の牛丼並盛(380円)より安いです。
(透明なケースは150円未満)
勉強なので、互換機に手を出すのは成長してからということで、
今は正規品で行きます。
そしてLCD表示にいきなり突撃します(笑)
なぜなら、動作チェックのために、いちいちLチカさせたり、
シリアルモニタで監視するというのも面倒くさいので
内部の詳細情報を液晶に出せたら楽だなと思ったからです。
まずは定番らしい↓のLCDモニタを使います。
スマートエレクトロニクスlcdモジュールディスプレイモニターlcd2004
20*4キャラクタ 5ボルト ブルーバックライト
とにかく安い。送料無料でほぼ400円。
しかもシリアル通信するためのI2Cが付属(ハンダ付け済)。
これがあれば、電源5V、GND含めて計4本の接続で済んでしまいます。
ピン数が限られるArduino UNOには大助かりです。
お急ぎの方はちょっと高めだけどアマゾンでも売ってます。
(アマゾンのはI2Cの種類が違うので若干違うかもしれません。)
液晶側のGNDをArduinoのGNDへ
液晶側のVCCをArduinoの5Vへ
液晶側のSDAをArduinoのAREFの右隣
液晶側のSCLをArduinoのAREFの2つ右
これだけ。ド素人の私にもなんとかついていける!
プログラム側を考えてみる。
どうやら一からコードを書く必要はないらしい。
すでにライブラリが用意されていて、ダウンロードすることで簡単に使えるようだ。
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
ここから最新ライブラリ(現在はNewliquidCrystal_1.3.4.zipが最新の様子)
ArduinoIDEを立ち上げて、これを登録する。
方法は
スケッチ>ライブラリをインクルード>.ZIP形式のライブラリをインストール
と辿って、ZIPファイルを指定するだけでいい。
すると勝手に展開されて、
C:\Users\*******\Documents\Arduino\libraries\NewliquidCrystal
ここに格納される。ふむふむ。なかなかに親切だ。
ではこのライブラリをどのように使うかというと、ちょっとネット検索して悩んだ。
とりあえず、ライブラリをIncludeするのは、ArduinoIDEの機能で一発ポンでできるようだ。
スケッチ>ライブラリをインクルード>NewliquidCrystal
ソースコードの最上部に必要なヘッダコードが追加されましたよ。
これで全ての情報が整ったと思ったらどうやらそうでは無いようだ。
シリアル通信をするためにはチップのアドレスを把握しないといけないらしい。
I2Cのチップをルーペで見てみるとPCF8574ATを使っているようだ。
どうやらチップごとにデバイスアドレスが違うようで、
(上写真は説明用PDFから抜粋です。)
A0,A1,A2ジャンパー部分がすべてオープンになっていることから
ウチのは0x3Fのようだ。
ではコードを書き書き(`・ω・´)
いろんなサイトをめぐり記述方法を調べ、
試行錯誤で以下のコードを作成してみる。
さてコンパイル・・
ボードArduino/Genuino Unoに対応するコンパイル時にエラーが発生しました。
exit status 1
ボードArduino/Genuino Unoに対するコンパイル時にエラーが発生しました。
まじすか・・・
ユーザーコードを書かないで、includeだけでコンパイルしてもエラーがでる。
どうやら自動的に追加された「# include SoftI2CMaster.h 」が悪さしているようだ。
これを外したらうまくいきましたよ。
実際は
#include LiquidCrystal_I2C.h
この1つがあれば、文字を表示するだけなら十分なようだ。
そしてLCD2004の画面は・・・
キター!( *´艸`)
カーソルの動きも、バックライトの点滅、スクロール等、すべて動いてます。
スクロールは、2行単位で上下入れ替わる謎の現象が起きてますが、
使うことはないので、良しとします。
これでやっと次のステップへ進めそうだ
トラックバックURL
トラックバック一覧
コメント一覧
コメント投稿