ADT7410の13bitと16bitの切り替え

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)
   
温度であまり意味がないが、、
カテゴリー iot