Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from machine import Pin
- from machine import SPI
- import utime
- MISO = Pin(16) # GPIO16 (21番ピン)
- CS = Pin(17) # GPIO17 (22番ピン)
- SCK = Pin(18) # GPIO18 (24番ピン)
- MOSI = Pin(19) # GPIO19 (25番ピン)
- class test_ADT7310:
- def __init__(self):
- self.ss=CS
- # クロック125kHz SPI_MODE3 MSBFIRST
- self.spi01=SPI(0,baudrate=125000,polarity=1,phase=1,bits=8,firstbit=SPI.MSB,mosi=MOSI,miso=MISO,sck=SCK)
- def spi_cs_on(self):
- self.ss.value(0)
- def spi_cs_off(self):
- self.ss.value(1)
- def start(self):
- self.spi_cs_off()
- buff=bytearray([0xff,0xff,0xff,0xff])
- self.spi_cs_on()
- self.spi01.write(buff)
- self.spi_cs_off()
- utime.sleep(0.1)
- while (1):
- # 16bit 1-shot
- buff=bytearray([0x08,0xa0])
- # 13bit 1-shot
- #buff=bytearray([0x08,0x20])
- self.spi_cs_on()
- self.spi01.write(buff)
- self.spi_cs_off()
- read_wait_time = utime.ticks_ms()
- read_wait = 23
- utime.sleep(0.01*read_wait)
- count001 = 0;
- while True:
- # ステータスレジスタの読み込み
- utime.sleep(0.01)
- buff=bytearray([0x40])
- self.spi_cs_on()
- self.spi01.write(buff)
- status_reg = bytearray(self.spi01.read(1,0x00))
- self.spi_cs_off()
- count001 += 1
- if count001 >= 500:
- break
- if ((status_reg[0] >> 7) & 1) == 0:
- break
- status_str = "status=0x{0:02x}, count001={1:d}, {2:d} ms".format(status_reg[0], count001, (utime.ticks_ms()-read_wait_time))
- #print(status_str)
- buff=bytearray([0x50])
- self.spi_cs_on()
- self.spi01.write(buff)
- temp_raw = bytearray(self.spi01.read(2,0x00))
- self.spi_cs_off()
- # 16bitの計算
- temp = (temp_raw[0]*256+temp_raw[1])
- if temp >= 32768:
- temp - 65536
- temp = temp / 128
- print("temp : {0:.4f} degC".format(temp))
- # 13bitの計算
- #temp = (temp_raw[0]*256+temp_raw[1])/8
- #if temp >= 4096:
- # temp - 8192
- #temp = temp / 16
- #print("temp : {0:.4f} degC".format(temp))
- utime.sleep(5.0)
- if __name__=="__main__":
- test_adt7310_03 = test_ADT7310()
- test_adt7310_03.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement