I2Cを使ってLCDに文字を表示させる!①(C言語)

I2Cを使ってLCDに文字を表示させる!①(C言語) RaspberryPi
スポンサーリンク

こんにちは。駆け出しエンジニアのまっきーです。

今回は、I2Cを使ってLCDに文字表示をさせたいと思います。

使用したもの

・RaspberryPi3B+

・I2C LCD Display(16*2)

・1602 I2Cキャラクタ表示液晶

・8ピンジャンパワイヤ(メス・メス)

↑8ピンでなくて大丈夫です

上記のもの(RaspberryPiを除く)は全て下記のセットに同梱されています。

Amazon.co.jp: OSOYOO(オソヨー) Raspberry Pi 学ぶ電子工作キット 初心者演習用パーツセット ラズパイ11実例 回路配線図とサンプルスケッチ有り プログラミング ラズベリー パイ 超入門 スターター学習キット LED制御 スイッチ I2C LCD 温湿度センサー マイクロサーボ 人体感知センサー A/Dコンバータ ブザー 大気圧センサー リレーモジュール制御 赤外線リモコン等IoTを実践する電子部品セット (Pi 3 DIY Kit 22in1): ホビー
Amazon.co.jp: OSOYOO(オソヨー) Raspberry Pi 学ぶ電子工作キット 初心者演習用パーツセット ラズパイ11実例 回路配線図とサンプルスケッチ有り プログラミング ラズベリー パイ 超入門 スターター学習キット LED制御 スイッチ I2C LCD 温湿度センサー マイクロサーボ 人体感知...

それではまずI2Cとは何かから説明していきます。

I2Cとは

I2C(アイ・スクエアド・シー、アイ・アイ・シー)はフィリップス社で開発されたシリアルバスである。低速な周辺機器をマザーボードへ接続したり、組み込みシステム携帯電話などで使われている。

Inter-Integrated Circuit の略で、I-squared-C(アイ・スクエアド・シー)が正式な読みとされている。ただし、一般的な文字コード環境のプレーンテキスト上では上付き文字が使えないため、I2CあるいはIICと表記されることも多く、これをもって「アイ・ツー・シー」と発声されたりカタカナ表記される[1]ことがある。(wikipedia)

I2Cとは、クロックに同期させて通信を行う同期式シリアル通信です。

この通信では2本の信号線を用います。

①SDA(Serial DAta line) データ信号

②SCL(Serial Clock Line) クロック信号

SCLで同期をとり、SDAでデータを送受信するということですね。

それぞれの通信にはプルアップ抵抗(Rp)を使います。

通信をする際にはマスタ、スレーブと役割を分け、マスタからスレーブに対して送信、受信の指示を送ります。

LCDとは

LCD(Liquid Crystal Display)とは、液晶ディスプレイと呼ばれ、生活の様々な場面で使用されています。

今回使用するLCDはこのようなものです。

最大(16*2)文字を下の図のように表示させることができます。

文字の表示は、下のASCIIコードに従います。

例えば、1は、00110001と表せます。16進数にすると0x31です。

LCDデータシートhttp://hades.mech.northwestern.edu/images/f/f7/LCD16x2_HJ1602A.pdf#search=’1602A+LCD+datasheet’

目的

LCDの画面に文字を表示させることを目的とします。

事前準備

今回参考に(ほぼやることは同じですが笑)したのはこちらのホームページです。

https://osoyoo.com/ja/2017/07/03/raspbery-pi3-drive-i2c-1602-lcd/

スターターキットに従って多くのチュートリアルを載せてくれています。

それでは設定を始めていきましょう。

①まず設定画面からI2Cを有効にして、再起動をします。

②再起動が終了したら次のコマンドを入力してください。

デバイス名が表示されれば、設定は成功です。

③次に、スレーブアドレスを取得します。

I2Cの説明でも少し触れましたが、スレーブアドレスというものを使います。これは基本的にはメーカーで固定されています。

スレーブアドレスが記載されていると思います。私と同じものを使用している場合、

0x27もしくは0x3Fと表示されると思います。

これで、準備は完了です。次に、電子回路です。

電子回路図

ラズパイのピンにそのままさして構いません。(接続には最新の注意を払いましょう)

プログラム

サンプルプログラムをコピペしました。ただし、スレーブアドレス(LCDAddr)は自分のデバイスのアドレスに設定してください。

実行すると…

;がなかったり、if文がおかしかったりします。修正しましょう。

再度実行すると…

画面が暗くなり、文字も表示されません…

ん~、サンプルプログラムなのになんででしょう。

しっかりプログラムの意味を読み解く必要がありそうですね。

今回はここまでにしようと思います。

ありがとうございました。

タイトルとURLをコピーしました