前提・実現したいこと
i2cのセンサーからのデータをCSVファイルに書き込みたい
pythonについて最近取り組み始めた初心者です。
以前は別のセンサ(BOSCH製 BME280 温湿度・気圧センサ)でデータを収集し、CSVファイルに書き込みができていたが、
センサを変えて(SENSIRION製 SHT31-DIS 温湿度センサ)書き込めなくなりました。
補足情報
温湿度を表示させることができているのでデータは収集できている。
python(1)? では整数部までは書き込めて小数部は0の羅列
python3 では書き込めていません。
int,flote型の問題かと思います…
ご助言いただければと思います。よろしくおねがいいたします。
プログラム
python
1 2#python 3 4import smbus 5import datetime 6import csv 7 8DATA_DIR = '/home/pi/data.xx/' 9i2c = smbus.SMBus(1) 10i2c_addr = 0x45 11 12i2c.write_byte_data(i2c_addr,0x24,0x16) 13 14def tempChanger(msb, lsb): 15 mlsb = ((msb << 8) | lsb) 16 return (-45 + 175 * int(str(mlsb), 10) / (pow(2, 16) - 1)) 17 18def humidChanger(msb, lsb): 19 mlsb = ((msb << 8) | lsb) 20 return (100 * int(str(mlsb), 10) / (pow(2, 16) - 1)) 21 22 23data = i2c.read_i2c_block_data(i2c_addr, 0x00, 6) 24T = tempChanger(data[0], data[1]) 25H = humidChanger(data[3], data[4]) 26 27 28print(str(T)+" and "+str(H))#確認用 29 30def ReadData(): 31 record_datetime = datetime.datetime.now() 32 record_file_name = record_datetime.strftime('%Y%m%d')+'_SHT31.csv' 33 record_time = record_datetime.strftime('%X') 34 35 data = [] 36 global T 37 global H 38 39 writer = csv.writer(open(DATA_DIR+record_file_name,'ab')) 40 writer.writerow([record_time,'%02.10f'%T,'%02.10f'%H]) 41 42 43if __name__ == '__main__': 44 try: 45 ReadData() 46 except: 47 print("miss")
>>>26.85320820935378 and 47.47692072938125
miss
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/07 10:43