湿度センサー HIH-6130 クラス

i2cデバイス用のクラスを自作してみたので、引き続き湿度センサーのプログラムを書き換えてみるみることにした。

# hih6130.py coding: utf-8
from i2c import I2C

# ===============================================
# =   HIH-6130 Humidity/Temperrature Sensors    =
# ===============================================
class setup(I2C):

    # Constructor
    def __init__(self, bus):
        I2C.__init__(self, bus, 0x27)

    def read(self, use_list = False):

        if use_list not in [True, False]:
            raise Exception("use_list is True or False.")

        if use_list:
            buf = self.read_block_data(0, 4)
        else:
            buf = self.read_block_data(0, 2)

        # get status
        sta = buf[0] >> 6 & 0x03

        # command mode or diagnostic mode are zero
        if sta >= 2:
            if use_temp:
                return [0, 0]
            else:
                return 0

        # get Humidity
        hum = ((buf[0] & 0x3F) << 8) + buf[1]
        hum = int(round(hum / 16383.0 * 100, 0))
        ret = hum

        # get Temperrature
        if use_list:
            tem = (buf[2] << 6) + (buf[3] >> 2)
            tem = int(round(tem / 16383.0 * 165 - 40, 0))
            ret = [hum, tem]

        return ret

hih6130クラスを使ったプログラム例とその実行結果は以下の通りです。

# test.py coding: utf-8
import hih6130

sensor = hih6130.setup(1)
h1 = sensor.read()
h2 = sensor.read(True)
print "h1 = ", h1
print "h2 = ", h2
$ python test.py
h1=  41
h2=  [41, 22]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です