Arduino

Arduinoを用いてLCDを使ってみる

2018年12月14日

こんばんは!
今回は液晶ディスプレイ(以下LCDと呼ぶ)をArduinoを用いて使っていきます。
ちなみにLCDはLiquid Crystal Displayの略です。

使用するもの

・Arduinoメインボード(https://amzn.to/2vkPIUH)
・USBケーブル(https://amzn.to/2UHhntl)
・ジャンパワイヤ (https://amzn.to/39uBU8T)
・LCDモジュール20*04(https://amzn.to/2Sa8Fno)

LCDモジュールについて

LCDとは液体と固体の両方の性質を持つ液晶組成物を使用した視覚表示装置のことを言います。
そしてLCDモジュールとは液晶を含む板状の「液晶パネル」と駆動回路、電源回路などを含んで構成されるものです。

簡単に言うと「画面」ですね。

そしてLCDはセグメント方式のLCDとドットマトリックス方式のLCDの2つのタイプがあります。

セグメントLCDは7セグメント、または14セグメントのアラビア数字やアルファベットなど決まった形状のものだけを表示することができます。
電卓やデジタル温度計が例として挙げられます。

ドットマトリックスLCDは点の集まりで任意の文字はもちろん、絵やグラフも表示することができます。
昔のものでいうとゲームボーイなどのドット絵、現代だとパソコンやテレビなどがドットマトリックス方式の例として挙げられます。

そしてドットマトリックス方式の液晶モジュールはさらにキャラクタLCDモジュールとグラフィックLCDモジュールに分類することができます。
キャラクタLCDモジュールは文字を表示することができますが、図形や絵などを表示することができません。しかしグラフィックLCDモジュールよりも制御が容易です。
一方、グラフィックLCDモジュールは図形や絵などを自由に表示することができます。

今回は使用する液晶モジュールはキャラクタLCDモジュールで、PCF8574TというI2C通信のためのシリアルインターフェースボードというものがついています。
このシリアルインターフェースボードにより4線のみでの通信が可能になっています。
4本のピンがあり下からSCL、SDA、VCC、GNDです。

手順

まず、ハード側からやっていきます。
以下の図のように配線します。

これでハード側は終了です。

次にコードを書いていきます。
今回はi2c通信を行うためのライブラリとしてLiquidCrystal_I2Cと、Wireを使用します。
LiquidCrystal_I2Cのダウンロードはこちらからできます
(ダウンロードの方法がわからない方はこちらの記事を参考にしてください。)

Arduino IDEを開いて次のコードを書き込みます。

コードの説明をしていきます。
まず、
#include <Wire.h>
#include<LiquidCrystal_I2C.h>
でi2c通信をするためのライブラリをダウンロードしています。

次に
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
で、lcdとの通信を開始しています。
0x27というのはi2c通信をするためのアドレスです。

アドレスを知るためにi2c_scannerというものを使用しました。i2c_scannerの使用方法についてはこちらの記事をご覧ください。

i2c通信のアドレスを取得する方法

setup()内では
lcd.begin(20, 4);
によりlcdの大きさを決定し、
lcd.backlight();によりバックライトの点灯
lcd.clear();によりlcdのクリアを行っています。

loop内では
lcd.setCursor(0,0);
により、lcdカーソルの設定をしています。
今回は20*4のlcdを使用しているのでxは0~19、yは0~3の間で設定します。左上が(0,0)、右下が(19,3)になっています。

LiquidCrystal_I2Cの関数などについてはこちらにまとめたので詳しく知りたい方はぜひご覧ください。

LiquidCrystal_I2Cライブラリの使い方

最後に
lcd.print(millis()/1000);
により経過時間[s]を表示しています。millis()というのはArduinoが起動してからの経過時間[ms]を表すものです。

これをマイコンボードに書き込むと、ちゃんと経過時間が表示されていることが確認できると思います。

まとめ

今回はi2c通信という通信方法を使ってlcdディスプレイを使用してみました。
ライブラリを利用することで簡単にできるのでセンサなどで読み取った値を表示することなどに使用できると思います。

今回はこれで終わります。
ではまた!

-Arduino

Copyright© 物を作る者 , 2024 All Rights Reserved.