エンジニア「くがとしお」のレベル上げ

エンジニアとして色々なことができるように資格取得、電子工作、アプリ開発を頑張ります。

ラズパイ2 ユーザーランドからI2C接続キャラクタLCDを制御してみた

      2016/04/26

概要

ラズベリーパイ2を使用して、LCDに好きな文字を出力するパート2です!

前回は、I2C TOOLSを使用してコマンドラインからI2Cを制御してLCDに文字を出力しました。
I2C TOOLSでは、ASCIIコードを調べないといけないので、面倒ですよね。
そんな時はライブラリがあると便利です。

今回はユーザーランドからライブラリを使ってC言語で制御しようと思います。

準備に関しては、前回の記事を御覧ください。

http://g-action.gack2u.com/raspi-i2c-lcd/

 

電子工作時間目安

40分ぐらい

難易度

★☆☆☆☆

 

スポンサードリンク

その前に・・・

今回の電子工作で知っておきたい知識を紹介しておきます。

 

I2C デバイスドライバー

I2Cを制御するためのデバイスドライバーがLinuxでは標準で組み込まれています。
I2Cドライバースタックは拡張性を持たせるために3層のスタック構成になっています。

I2Cクライアントドライバー:個別のI2Cデバイスのためのドライバー。
I2Cコアドライバー:I2Cを制御するためのカーネルAPIを提供。他のカーネルモジュールが使用可能。
I2Cアダプタードライバー:I2Cバスインターフェースのハードウェアを制御する低レベルドライバー

raspi-configでのI2C有効化によって、I2Cを制御するためのドライバーがカーネルにロードされます。

I2C

実装

今回は、 あらかじめ用意されているドライバを使用して制御します。
I2Cクライアントドライバー「I2C-dev」を利用します。

インストール

実装を簡単にするため、I2C TOOLSが提供するライブラリを利用します。
実体はヘッダーファイルi2c-dev.hに記述されたインライン関数です。

下記コマンドでインストールできます。

 

制御プログラム

制御プログラムは、この書籍は下記を参考にしました。

I2Cを制御するためのヘッダファイルを作成しておきます。

 

I2C LCD制御ライブラリ

I2CでLCDを制御するライブラリを作成します。

 

ヘッダファイル

まずは、ヘッダファイルです。
libi2clcd.h

 

ソースファイル

次は、ソースファイルを作成します。
libi2clcd.c

i2c_smbus_write_xxx は、ioctlを呼び出しています。

 

 

 

Makefile

makeするためのMakefileを作成します。

 

サンプルプログラム

ライブラリを使用してLCDに文字を出力するプログラム

 

動作チェック

DSC01856

 

「くがとしお」的まとめ

今回は、デバイスドライバーを利用してC言語でLCDを制御しました。
次回は、デバイスドライバーを自分で作成してみたいと思います。
組み立て、配線は前回の記事を御覧ください。

では! (^^)/

 

 - 電子工作

PAGE TOP