デジタル入出力を操作する(Python)

準備

初めて使用する場合は、セットアップ(ボードの取り付け)をおこないます。

DIO-8/4RD-IRCのセットアップ(ラズベリーパイ)
DIO-8/4RD-IRCのセットアップ(NVIDIA Jetson Nano 開発者キット)

python-smbusがインストールされてない場合は、インストールします。

$ sudo apt-get install python-smbus

プログラムの作成

「test_dio84rd.py」というファイル名で以下のファイルを保存します。
(または test_dio84rd.py からダウンロードします)

import smbus

PCA9535_REG_INPUT_PORT1 = 1
PCA9535_REG_OUTPUT_PORT0 = 2
PCA9535_REG_CONFIG_PORT0 = 6

class DIO_8_4RD_IRC():
    i2c = smbus.SMBus(1)

    def __init__(self, slave=0x23):
        self.address = slave
        self.i2c.write_byte_data(self.address, PCA9535_REG_CONFIG_PORT0, 0xf0)

    # デジタル出力
    def output(self, value):
        self.i2c.write_byte_data(self.address, PCA9535_REG_OUTPUT_PORT0, ~value)

    # デジタル入力
    def input(self):
        return ~self.i2c.read_byte_data(self.address, PCA9535_REG_INPUT_PORT1) & 0xff

expander = DIO_8_4RD_IRC()

# デジタル出力
# (例)OUT2とOUT0をオン(OUT3とOUT1をオフ)  
expander.output(0x05)

# デジタル入力
print('InputData: 0x{:02x}'.format(expander.input()))

動作確認

プログラムを実行します。

$ sudo python test_dio84rd.py  

デジタル出力のOUT2とOUT0がオンします。
デジタル入力値が表示されます。

InputData: 0x40

参考資料

DIO-8/4RD-IRCの製品情報・ドキュメント