和歌山のプログラミング・システム開発ならシステムキューブ
今回は、温度、気圧、湿度を読み出すためのパラメータを書込んで補正データとRawデータを読取る部分をpythonで書いてみました。
書込みパラメータは第4回のシェルスクリプトでRawデータを読むを参考にしてください。
ーーーーーーーーーーーーーーーーーーーー 以下プログラム
#!/usr/bin/python
import smbus
import time
SMBUS_NUMBER = 1
SMBUS_ADDR = 0x77
SMBUS_REG_CONF = 0xF5
SMBUS_REG_CTRL_MEAS = 0xF4
SMBUS_REG_CTRL_HUM = 0xF2
dig_T = []
dig_P = []
dig_H = []
calib = {}
n = 0x88
while n <= 0xA1:
____ calib[n] = 0
____ n = n + 1
n = 0xE1
while n <= 0xF0:
____ calib[n] = 0
____ n = n + 1
n = 0xF7
while n <= 0xFE:
____ calib[n] = 0
____ n = n + 1
bus = smbus.SMBus(SMBUS_NUMBER)
bus.write_byte_data(SMBUS_ADDR,SMBUS_REG_CONF,0xA0)
bus.write_byte_data(SMBUS_ADDR,SMBUS_REG_CTRL_HUM,0x01)
bus.write_byte_data(SMBUS_ADDR,SMBUS_REG_CTRL_MEAS,0x25)
time.sleep(0.1)
for k in calib.keys():
____ calib[k] = bus.read_byte_data(SMBUS_ADDR, k)
for k,v in calib.items():
____ print “0x%02X -> 0x%02X” % (k,v)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー ここまで
このプログラムを書くにあたり、工夫した点はDictを使いレジスタアドレスとデータの関係性を作り上げている点にあります。
レジスタのアドレス等はデータシートに出ています。
こうすることによりレジスタの読取り部分をすっきりと書くことができたのではないかと思います。
ここではソース中のスペースを _ で表している事にご注意ください。
今回のソースはここからダウンロードできます。
何分Pythonは初書きのためつたないところがあるかもしれませんがご容赦ください。