对micropython 和C2板卡执行 build:prod
This commit is contained in:
@@ -1,52 +1,52 @@
|
|||||||
#ADXL345
|
#ADXL345
|
||||||
import time
|
import time
|
||||||
import ustruct
|
import ustruct
|
||||||
from micropython import const
|
from micropython import const
|
||||||
|
|
||||||
DATA_FORMAT = const(0x31)
|
DATA_FORMAT = const(0x31)
|
||||||
BW_RATE = const(0x2c)
|
BW_RATE = const(0x2c)
|
||||||
POWER_CTL = const(0x2d)
|
POWER_CTL = const(0x2d)
|
||||||
INT_ENABLE = const(0x2E)
|
INT_ENABLE = const(0x2E)
|
||||||
OFSX = const(0x1e)
|
OFSX = const(0x1e)
|
||||||
OFSY = const(0x1f)
|
OFSY = const(0x1f)
|
||||||
OFSZ = const(0x20)
|
OFSZ = const(0x20)
|
||||||
|
|
||||||
class ADXL345:
|
class ADXL345:
|
||||||
def __init__(self, i2c, address=0X53):
|
def __init__(self, i2c, address=0X53):
|
||||||
self._device = i2c
|
self._device = i2c
|
||||||
self._address = address
|
self._address = address
|
||||||
if self._rreg(0x0) != 0xe5:
|
if self._rreg(0x0) != 0xe5:
|
||||||
raise AttributeError("Cannot find a ADXL345")
|
raise AttributeError("Cannot find a ADXL345")
|
||||||
|
|
||||||
self._wreg(DATA_FORMAT,0x2B) #16g量程
|
self._wreg(DATA_FORMAT,0x2B) #16g量程
|
||||||
self._wreg(BW_RATE,0x0A) #数据输出速度为100Hz
|
self._wreg(BW_RATE,0x0A) #数据输出速度为100Hz
|
||||||
self._wreg(INT_ENABLE,0x00) #不使用中断
|
self._wreg(INT_ENABLE,0x00) #不使用中断
|
||||||
|
|
||||||
self._wreg(OFSX,0x00)
|
self._wreg(OFSX,0x00)
|
||||||
self._wreg(OFSY,0x00)
|
self._wreg(OFSY,0x00)
|
||||||
self._wreg(OFSZ,0x00)
|
self._wreg(OFSZ,0x00)
|
||||||
self._wreg(POWER_CTL,0x08) #链接使能,测量模式
|
self._wreg(POWER_CTL,0x08) #链接使能,测量模式
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
|
|
||||||
def readXYZ(self):
|
def readXYZ(self):
|
||||||
x, = ustruct.unpack('<h', self._rreg(0x32,2))
|
x, = ustruct.unpack('<h', self._rreg(0x32,2))
|
||||||
y, = ustruct.unpack('<h', self._rreg(0x34,2))
|
y, = ustruct.unpack('<h', self._rreg(0x34,2))
|
||||||
z, = ustruct.unpack('<h', self._rreg(0x36,2))
|
z, = ustruct.unpack('<h', self._rreg(0x36,2))
|
||||||
return (x/256,y/256,z/256)
|
return (x/256,y/256,z/256)
|
||||||
|
|
||||||
def readX(self):
|
def readX(self):
|
||||||
return self.readXYZ()[0]
|
return self.readXYZ()[0]
|
||||||
|
|
||||||
def readY(self):
|
def readY(self):
|
||||||
return self.readXYZ()[1]
|
return self.readXYZ()[1]
|
||||||
|
|
||||||
def readZ(self):
|
def readZ(self):
|
||||||
return self.readXYZ()[2]
|
return self.readXYZ()[2]
|
||||||
|
|
||||||
def _wreg(self, reg, val):
|
def _wreg(self, reg, val):
|
||||||
'''Write memory address'''
|
'''Write memory address'''
|
||||||
self._device.writeto_mem(self._address,reg,val.to_bytes(1, 'little'))
|
self._device.writeto_mem(self._address,reg,val.to_bytes(1, 'little'))
|
||||||
|
|
||||||
def _rreg(self, reg,nbytes=1):
|
def _rreg(self, reg,nbytes=1):
|
||||||
'''Read memory address'''
|
'''Read memory address'''
|
||||||
return self._device.readfrom_mem(self._address, reg, nbytes)[0] if nbytes<=1 else self._device.readfrom_mem(self._address, reg, nbytes)[0:nbytes]
|
return self._device.readfrom_mem(self._address, reg, nbytes)[0] if nbytes<=1 else self._device.readfrom_mem(self._address, reg, nbytes)[0:nbytes]
|
||||||
|
|||||||
@@ -1,31 +1,31 @@
|
|||||||
from struct import unpack as unp
|
from struct import unpack as unp
|
||||||
from time import sleep_ms
|
from time import sleep_ms
|
||||||
|
|
||||||
# SHT20 default address
|
# SHT20 default address
|
||||||
SHT20_I2CADDR = 64
|
SHT20_I2CADDR = 64
|
||||||
TRI_T_MEASURE_NO_HOLD = b'\xf3'
|
TRI_T_MEASURE_NO_HOLD = b'\xf3'
|
||||||
TRI_RH_MEASURE_NO_HOLD = b'\xf5'
|
TRI_RH_MEASURE_NO_HOLD = b'\xf5'
|
||||||
READ_USER_REG = b'\xe7'
|
READ_USER_REG = b'\xe7'
|
||||||
WRITE_USER_REG = b'\xe6'
|
WRITE_USER_REG = b'\xe6'
|
||||||
SOFT_RESET = b'\xfe'
|
SOFT_RESET = b'\xfe'
|
||||||
|
|
||||||
class SHT20(object):
|
class SHT20(object):
|
||||||
def __init__(self, i2c_bus):
|
def __init__(self, i2c_bus):
|
||||||
self._address = SHT20_I2CADDR
|
self._address = SHT20_I2CADDR
|
||||||
self._bus = i2c_bus
|
self._bus = i2c_bus
|
||||||
|
|
||||||
def get_SHT_temperature(self):
|
def get_SHT_temperature(self):
|
||||||
self._bus.writeto(self._address, TRI_T_MEASURE_NO_HOLD)
|
self._bus.writeto(self._address, TRI_T_MEASURE_NO_HOLD)
|
||||||
sleep_ms(150)
|
sleep_ms(150)
|
||||||
origin_data = self._bus.readfrom(self._address, 2)
|
origin_data = self._bus.readfrom(self._address, 2)
|
||||||
origin_value = unp('>h', origin_data)[0]
|
origin_value = unp('>h', origin_data)[0]
|
||||||
value = -46.85 + 175.72 * (origin_value / 65536)
|
value = -46.85 + 175.72 * (origin_value / 65536)
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def get_SHT_relative_humidity(self):
|
def get_SHT_relative_humidity(self):
|
||||||
self._bus.writeto(self._address, TRI_RH_MEASURE_NO_HOLD)
|
self._bus.writeto(self._address, TRI_RH_MEASURE_NO_HOLD)
|
||||||
sleep_ms(150)
|
sleep_ms(150)
|
||||||
origin_data = self._bus.readfrom(self._address, 2)
|
origin_data = self._bus.readfrom(self._address, 2)
|
||||||
origin_value = unp('>H', origin_data)[0]
|
origin_value = unp('>H', origin_data)[0]
|
||||||
value = -6 + 125 * (origin_value / 65536)
|
value = -6 + 125 * (origin_value / 65536)
|
||||||
return value
|
return value
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user