Arduino Uno R3とLCD 1602 をつないでみる

大人の夏休みの自由研究の続き…ではなく。 本当に夏休みになってしまって、子どもの自由研究のお手伝い。 プログラミングに興味がある子どもとの共同作業ってことで、手元にあるArduinoで遊ぶことになったので、大人の自由研究はちょっとお休み。 で、何やるの?ということで聞いたら、液晶で文字を出したいとのこと。 なら、子どもに教える前に事前に検証という名前のツマミ食いをしてみましょうか。と行動開始。

LCDモジュールを入手する

あくまで子どもの自由研究のお付き合い。
どうせすぐに飽きるんだから安いやつでごまかします。

KKHMF DC 5V 1602 LCD ディスプレイモジュール
16×2キャラクタ LCDブルーブラックライト

表示文字数: 16 x 2 文字
駆動電圧: 5V
文字色: 白
バックライト: 青
コントローラIC: SPLC780D(または同等品)
外形寸法:80.0mm x 36.0mm x 14.5mm
範囲:64.5mm x14.5mm

Amazonで送料込みで 187円(2019年08月時点) とは。
チャイナパワーおそるべし。
自分が初めての電子工作で買ったときは この10倍の金額でも買えなかったのに。いまやスナック感覚です。

さすがに値段が値段で簡易包装も簡易包装な感じでの送付だったけれど、届いたものの感じとしては品質の悪さとかは感じられず。わりといい感じです。 このユニットだけでも文字を表示することが可能です。 が、直接にArduinoと接続しちゃうと、数少ないポートを一気に6も消費しちゃいます。正直もったいない。 ということで、こいつも入手しておきます。

シリアル インタフェース ボード モジュール

EasyWordMall 1602 LCD ブラック
IIC/I2C/TWI/SPI シリアル インタフェース ボード モジュール

仕様: 1602 LCD用
供給電力: 5.0V (2.5-6.0V)
I2Cアドレス: 0x20 (0x20 - 0x27の範囲で選択可) 
※ ものによって 0x38 - 0x3Fの可能性あり
コントラスト: ポテンショメータによる調整可
搭載チップ: PCF8574T(別チップの場合ありの模様)

LCD用を謳っていますが、中身的にはただの”I/O エキスパンダ”です。 この程度なら、自分で作ってしまってもいいところではありますが。 なんといっても、単価で142円(2019年08月時点)。送料込み。 まとめ買いならさらに値下げという代物。 自作するほうがむしろ高上りなので、あっさり買ってしまいましょう。

Amazonでのオーダーから 1週間 ほどでチャイナポスト経由で到着。
プチプチ簡易包装。多少のピン曲がりなんかはご愛敬って感じで、適当にピンセットで補正。

これの接続。そのまま何も考えずに背面からヘッダーピンを差し込んで半田付け、つなぐだけでOK。という形になっていて便利なんだけど。
ただ、今回のこのモジュールの組み合わせだと、液晶を押さえている金具とコネクタの半田面が干渉しちゃう。(ショートしちゃう)
浮かせた状態で半田付けして繋げばいいんだけれど、それも安定感が悪い。
もしくは、ポリイミドテープでも貼って絶縁しておけばいいんだろうけど、それも格好がね。

と、ヘッダーピンを用意。
Arduino Uno R3を買ったらついてきたヘッダーピンのあまり。
で、こいつからピンをペンチで抜き取り、プラスティック部品をインターフェイスボードのピンに差し込んで下駄を履かせます。

太めのピンのヘッダーピンを使った場合はまとめて差し込めるけれど、同じくらいの太さの場合、
一気にやるのは難しいので、一本一本に切り取って差し込むのが効率よさげです。

LCDモジュールとシリアル インタフェース ボード モジュールをつなぐ

下駄で浮かせた状態で半田付け。
いい感じで干渉しない感じになっています。
これはなかなかいい感じ。

この作業時点でのポイントは、どちらか端のピンを仮止め。そののちに半田を温めながら、両基板にテンションをかけて位置合わせ。いい感じになったら、逆側のピンから丁寧に一本一本半田付けしていきます。 これが一番手早く作業できるようです。

Arduino Uno R3と接続

ここまで出来たら、Arduino Uno R3 と4箇所、接続します。

LCDユニット Arduino Uno
VCC +5v
GND GND
SDA A4
SCL A5

Arduino IDEでの作業

ArduinoにスケッチしてLCDにものを表示させるわけだけど。 素のままのArduino IDEだと操作が面倒。 ということで、ライブラリを追加して対応。

ライブラリのダウンロード

https://github.com/marcoschwartz/LiquidCrystal_I2Cにアクセスして、”Robot I2C LCD displays”を入手します。

“Clone or download”ボタン内の”Download ZIP”をクリックしてブツを入手しましょう。

Arduino IDEに取り込む

ダウンロードが完了したら、開発環境にライブラリを追加しなければなりません。

[スケッチ]-[ライブラリをインクルード]-[.ZIP形式のライブラリをインストール…]を選択。今回ダウンロードしたZIPファイルを選択すれば準備完了です。

スケッチして動作確認

実際にスケッチして、Arduino Uno R3に流し込んでみます。 テストに使用したのは、こんな感じの”Hello, World!!”。何も考えずに流し込んでみます。

#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27, 16, 2); // Set the LCD address to 0x27 for a 16 chars and 2 line display
 
void setup() {
  lcd.init(); // LCD Initialize
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Hello, World!!");
}
 
void loop(){
}

で、実機を確認。 LCDに何も表示されていません…という場合は、”EasyWordMall 1602 LCD ブラック IIC/I2C/TWI/SPI シリアル インタフェース ボード モジュール”の裏にあるポテンショメータ(半固定抵抗)を回してコントラスト調整。いずれかのポイントで文字が表示されるようになるはずです。

まとめ

ArduinoでLCDを駆動。 PICとかでちまちま作業していたころを考えると、本当に簡単になりましたね。 工作時間は準備別で5-10分ほど。動作確認まで含めて15分ほどの作業量。 コストもLCDとコントローラで329円。コンビニでちょっといいビールを買ったらこのくらいするレベルの値段で遊べるのはすごい世の中になったものです。

コメント