Skip to content

秋月の小型I2C接続LCDのデバイスドライバ(Linux)

Notifications You must be signed in to change notification settings

hogeki/aqm0802a

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

秋月のI2C接続小型LCD(AQM0802A)のLinux用デバイスドライバを作ってみました。
http://akizukidenshi.com/catalog/g/gP-06669/
Raspberry Pi(Raspbian Wheezy)上で開発しています。他のプラットホーム上でも多分動くと思います。

使い方(Raspberry Piで使うことを想定):
1.まずRasPiでI2Cを使えるようにします。
/etc/modprobe.d/raspi-blacklist.confでi2c-bcm2708の行をコメントアウトします。
#blacklist i2c-bcm2708
rebootして設定を反映します。

2.ドライバをコンパイルします。まずRaspbianのカーネルをビルドしておく必要があります。
カーネルビルドについては説明するのが面倒なので適当にググってください。
/usr/src/linuxにカーネルソースがあるとすると
make -C /usr/src/linux M=$PWD modules
でドライバがビルドできます。

3.出来上がったaqm0802a.koをinsmodします。そして以下のコマンドでI2CのアダプタにAQM0802Aが接続されていることを伝えます。
echo aqm0802a 0x3e > /sys/class/i2c-adapter/i2c-1/new_device
/proc/devicesでデバイスのメジャー番号を確認します。
cat /proc/devices | grep aqm0802a
私の環境では248でした。このメジャー番号を使ってデバイスファイルを作成します。
mknod /dev/akilcd c 248 0

4./dev/akilcdは16バイトまでの文字列を書き込むことができる普通のキャラクタデバイスです。
echo -n "hoge" > /dev/akilcd
で液晶に文字が表示されます(-nを付けないと改行コードが入ってしまいます)。

5.AQM0802Aはコントラストを0から63まで設定することができます。
デフォルトでは32になっています。これを変更するにはioctlを使います。
ioctl(ファイルディスクリプタ, 26625, コントラスト);
コントラスト設定のためのコマンドも作っておきました(setcontrast.c)。

6.カーソルの表示/非表示を設定することもできます。
ioctl(ファイルディスクリプタ, 26626, 設定値);
設定値:
0 カーソルを表示しない
1 カーソルを表示する
2 カーソルを点滅させる
カーソルの位置はその時点でのファイルポインタの位置になります。
lseekによってカーソルを任意の位置に動かすこともできます。

7.ユーザーが定義した文字を表示することもできます。
ioctl(ファイルディスクリプタ, 26627〜26632, フォントデータへのポインタ);
リクエストコード26627〜26632で文字コード0から5に対応する文字を定義できます。
フォントデータはサイズ8のchar型の配列です。配列のそれぞれの要素は下位5bitだけが意味をもち、1bitが1ドットに対応しています。
以下のような配列によって5*8ドットの任意のフォントを表します。

000 00000
000 00000
000 01010
000 00000
000 00000
000 10001
000 01110
000 00000

echo -en "\000" > /dev/akilcd
のようにしてユーザー定義の文字を表示できます。

About

秋月の小型I2C接続LCDのデバイスドライバ(Linux)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published