PCF8591を使う(コマンドライン編)


こ ちらで i2cの汎用的なI/Oプログラム(infocast_i2c)が公開されています。
このプログラムを使うとコマンドラインからi2cデバイスを使うことができます。
但しデバイスは「/dev/i2c-2」になっているので、Rpiの場合は「/dev/i2c-1」に変更する必要が有ります。

起動時にはいくつか引数を指定します。
2番目の引数はPCF8591のi2cアドレスです。
3番目の引数はPCF8591のレジスターアドレスで0x40はチャネル1、0x41はチャネル2の指定です。
実行結果は以下の様になります。
$ cc -o i2c infocast_i2c.c

$ sudo ./i2c r 0x48 0x40
Register 64: 255 (ff)
$ sudo ./i2c r 0x48 0x40
Register 64: 128 (80)
$ sudo ./i2c r 0x48 0x41
Register 65: 128 (80)
$ sudo ./i2c r 0x48 0x41
Register 65: 255 (ff)
$ sudo ./i2c r 0x48 0x41
Register 65: 255 (ff)

ic2の場合、1回前の結果が得られるので、最低でも2回以上、同じコマンドを実行する必要が有ります。
コマンド@実行→結果は不定
コマンドA実行→コマンド@の結果が得られる
コマンドB実行→コマンドAの結果が得られる
コマンドC実行→コマンドBの結果が得られる

参考までにi2cエクスパンダーのPCF8574は以下のコマンドで制御することができます。
PCF8574のP0からP3にLEDをつなげると、順々にLチカします。
$ cc -o i2c infocast_i2c.c

$ sudo ./i2c w 0x20 0x00 0x01
Set register 0: 1 (1)
$ sudo ./i2c w 0x20 0x00 0x02
Set register 0: 2 (2)
$ sudo ./i2c w 0x20 0x00 0x03
Set register 0: 3 (3)
$ sudo ./i2c w 0x20 0x00 0x04
Set register 0: 4 (4)
$ sudo ./i2c w 0x20 0x00 0x05
Set register 0: 5 (5)
$ sudo ./i2c w 0x20 0x00 0x06
Set register 0: 6 (6)
$ sudo ./i2c w 0x20 0x00 0x07
Set register 0: 7 (7)
$ sudo ./i2c w 0x20 0x00 0x08
Set register 0: 8 (8)

次回はArduinoをFirmate経由でADコンバータとして使う方法を紹介し ます。