×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
1.ADT7410の13bitと16bitの切り替え
コンフィギュレーション・レジスタを1にする
ADT7410のコンフィグレジスタは0X03
上位1ビットが1なら16ビット 0なら13ビット
i2c.write_byte_data(adt7410_addr,0x03,0x00) が13ビット
i2c.write_byte_data(adt7410_addr,0x03,0x80) が16ビット
2.分解能が
13ビットなら1/16
if (data>4096):
data = data - 8192
data = data /16.0
16ビットなら
if (data>= 32768): マイナスフラグが上位1ビットのため
data= temp - 65536
data = data/128.0
3.13ビットのデータソース
#i2c adt7410
import time
import smbus
#make new
i2c = smbus.SMBus(1)
#i2caddr
adt7410_addr = 0x48
register7410 = 0x00
#rejista03 16bit
i2c.write_byte_data(adt7410_addr,0x03,0x00)
while True:
#rejisuta 0x00 0x01 2byte
datas = i2c.read_i2c_block_data(adt7410_addr,register7410,2)
data = datas[0] << 8
data = data | datas[1]
data = data >> 3
if (data>4096):
data = data - 8192
data = data /16.0
print(data )
time.sleep(1)
4.16ビットの時のデータソース
#i2c adt7410
import time
import smbus
#make new
i2c = smbus.SMBus(1)
#i2caddr
adt7410_addr = 0x48
#rejista03 16bit
i2c.write_byte_data(adt7410_addr,0x03,0x80)
while True:
#rejisuta 0x00 0x01 2byte
t_data = i2c.read_i2c_block_data(adt7410_addr,0x00,2)
temp = t_data[0] << 8
temp = temp | t_data[1]
if (temp >= 32768):
temp = temp - 65536
now_temp = temp /128.0
print(now_temp)
time.sleep(1)
温度であまり意味がないが、、、
コンフィギュレーション・レジスタを1にする
ADT7410のコンフィグレジスタは0X03
上位1ビットが1なら16ビット 0なら13ビット
i2c.write_byte_data(adt7410_addr,0x03,0x00) が13ビット
i2c.write_byte_data(adt7410_addr,0x03,0x80) が16ビット
2.分解能が
13ビットなら1/16
if (data>4096):
data = data - 8192
data = data /16.0
16ビットなら
if (data>= 32768): マイナスフラグが上位1ビットのため
data= temp - 65536
data = data/128.0
3.13ビットのデータソース
#i2c adt7410
import time
import smbus
#make new
i2c = smbus.SMBus(1)
#i2caddr
adt7410_addr = 0x48
register7410 = 0x00
#rejista03 16bit
i2c.write_byte_data(adt7410_addr,0x03,0x00)
while True:
#rejisuta 0x00 0x01 2byte
datas = i2c.read_i2c_block_data(adt7410_addr,register7410,2)
data = datas[0] << 8
data = data | datas[1]
data = data >> 3
if (data>4096):
data = data - 8192
data = data /16.0
print(data )
time.sleep(1)
4.16ビットの時のデータソース
#i2c adt7410
import time
import smbus
#make new
i2c = smbus.SMBus(1)
#i2caddr
adt7410_addr = 0x48
#rejista03 16bit
i2c.write_byte_data(adt7410_addr,0x03,0x80)
while True:
#rejisuta 0x00 0x01 2byte
t_data = i2c.read_i2c_block_data(adt7410_addr,0x00,2)
temp = t_data[0] << 8
temp = temp | t_data[1]
if (temp >= 32768):
temp = temp - 65536
now_temp = temp /128.0
print(now_temp)
time.sleep(1)
温度であまり意味がないが、、、
PR