SHT20 i2c sensor
-
My code looks like this
from machine import I2C import array import time import binascii #Init bus i2c = I2C(0, I2C.MASTER, baudrate=100000) #SHT20 Temperature command (use no hold master only commands --> 0xF3 ) command = array.array('B', [0xF3]) result = array.array('B', [0, 0, 0]) print(i2c.writeto(0x40, command)) time.sleep(0.1) result = binascii.hexlify(i2c.readfrom(0x40, 3)) print(result)
it prints values like this : b'6f40f1'
how do I get it to print temperature decimal?
-
@robert-hh
Thank you so much! Works well
-
@Sudosu132 You could try to use my Si7021 module. It looks as if it could work. The commands and formula are pretty much the same.
https://github.com/robert-hh/SI7021
Edit: Just tried it with an SHT21. Works fine.
-
@Sudosu132 The first two bytes are the temp return value. You can make that a decimal number with:
T = result[0] * 256 + result[1]
In you example, that should give 28480. That value then goes into the formulat from the data sheet:
temp = -46.85 + 175.72 * (T / 65538.0)
Resulting in about 29.5 °C.
Edit: The third byte from result is the checksum.