39 lines
1.0 KiB
Python
39 lines
1.0 KiB
Python
from struct import unpack as unp
|
|
from time import sleep_ms
|
|
|
|
# SHT20 default address
|
|
SHT20_I2CADDR = 64
|
|
|
|
# SHT20 Command
|
|
TRI_T_MEASURE_NO_HOLD = b"\xf3"
|
|
TRI_RH_MEASURE_NO_HOLD = b"\xf5"
|
|
READ_USER_REG = b"\xe7"
|
|
WRITE_USER_REG = b"\xe6"
|
|
SOFT_RESET = b"\xfe"
|
|
|
|
|
|
class SHT20(object):
|
|
|
|
def __init__(self, i2c_bus):
|
|
self._address = SHT20_I2CADDR
|
|
self._bus = i2c_bus
|
|
|
|
def get_SHT_temperature(self):
|
|
self._bus.writeto(self._address, TRI_T_MEASURE_NO_HOLD)
|
|
sleep_ms(150)
|
|
origin_data = self._bus.readfrom(self._address, 2)
|
|
origin_value = unp(">h", origin_data)[0]
|
|
value = -46.85 + 175.72 * (origin_value / 65536)
|
|
return value
|
|
|
|
def get_SHT_relative_humidity(self):
|
|
self._bus.writeto(self._address, TRI_RH_MEASURE_NO_HOLD)
|
|
sleep_ms(150)
|
|
origin_data = self._bus.readfrom(self._address, 2)
|
|
origin_value = unp(">H", origin_data)[0]
|
|
value = -6 + 125 * (origin_value / 65536)
|
|
return value
|
|
|
|
|
|
# sht=SHT20(I2C(scl = Pin(22), sda = Pin(21), freq = 100000))
|