更新sant的库,修复asr_en, key_adc, bot端口操作
This commit is contained in:
@@ -13,8 +13,7 @@ from mixgo_sant import onboard_bot
|
||||
|
||||
class GC032A(Camera):
|
||||
def __init__(self, framesize=LCD, hmirror=None):
|
||||
onboard_bot.cam_en(0)
|
||||
time.sleep_ms(500)
|
||||
onboard_bot.cam_en(1, 500)
|
||||
super().__init__()
|
||||
super().set_framesize(framesize)
|
||||
time.sleep_ms(100)
|
||||
@@ -26,5 +25,4 @@ class GC032A(Camera):
|
||||
|
||||
def deinit(self):
|
||||
super().deinit()
|
||||
time.sleep_ms(100)
|
||||
onboard_bot.cam_en(1)
|
||||
onboard_bot.cam_en(0,100)
|
||||
|
||||
@@ -8,21 +8,24 @@ MicroPython library for the CI130Xx (ASR-I2C)
|
||||
from ci130x import CI130X
|
||||
|
||||
class CI1302(CI130X):
|
||||
def __init__(self, i2c_bus, addr=0x64):
|
||||
def __init__(self, i2c_bus, func, addr=0x64):
|
||||
self._device = i2c_bus
|
||||
self._address = addr
|
||||
self._cmd_id = None
|
||||
self._func = func
|
||||
|
||||
def _wreg(self, reg):
|
||||
'''Write memory address'''
|
||||
try:
|
||||
self._device.writeto(self._address, reg)
|
||||
except Exception as e:
|
||||
raise AttributeError("Power supply may not be turned on or", e)
|
||||
except:
|
||||
self._func(1, 700) #Power on
|
||||
self._device.writeto(self._address, reg)
|
||||
|
||||
def _rreg(self, reg, nbytes=1):
|
||||
'''Read memory address'''
|
||||
try:
|
||||
return self._device.readfrom_mem(self._address, reg, nbytes)
|
||||
except Exception as e:
|
||||
raise AttributeError("Power supply may not be turned on or", e)
|
||||
except:
|
||||
self._func(1, 700) #Power on
|
||||
return self._device.readfrom_mem(self._address, reg, nbytes)
|
||||
|
||||
@@ -64,7 +64,7 @@ except Exception as e:
|
||||
'''ASR-Sensor'''
|
||||
try :
|
||||
from ci1302x import CI1302
|
||||
onboard_asr = CI1302(inboard_i2c)
|
||||
onboard_asr = CI1302(inboard_i2c, onboard_bot.asr_en)
|
||||
except Exception as e:
|
||||
print("Warning: Failed to communicate with CI130X (ASR) or",e)
|
||||
|
||||
@@ -80,15 +80,16 @@ onboard_music = MIDI(46, pa_ctrl=onboard_bot.spk_en)
|
||||
class KEYSensor:
|
||||
def __init__(self, pin, range):
|
||||
self.pin = pin
|
||||
self.adc = ADC(Pin(pin), atten=ADC.ATTN_0DB)
|
||||
self.adc = ADC(Pin(pin))
|
||||
self.adc.atten(ADC.ATTN_0DB)
|
||||
self.range = range
|
||||
self.flag = True
|
||||
|
||||
def _value(self):
|
||||
values = []
|
||||
for _ in range(50):
|
||||
for _ in range(25):
|
||||
values.append(self.adc.read())
|
||||
time.sleep_us(2)
|
||||
time.sleep_us(5)
|
||||
return (self.range-200) < min(values) < (self.range+200)
|
||||
|
||||
def get_presses(self, delay = 1):
|
||||
|
||||
@@ -33,7 +33,14 @@ class BOT035:
|
||||
def _rreg(self, reg, nbytes=1):
|
||||
'''Read memory address'''
|
||||
self._i2c.writeto(_BOT035_ADDRESS, reg.to_bytes(1, 'little'))
|
||||
return int.from_bytes(self._i2c.readfrom(_BOT035_ADDRESS, nbytes), 'little')
|
||||
return int.from_bytes(self._i2c.readfrom(_BOT035_ADDRESS, nbytes), 'little')
|
||||
|
||||
def _bits(self, offset, mask, value=None, delay=100, reg=_BOT035_CMD):
|
||||
if value is None:
|
||||
return (self._rreg(reg) & mask) >> offset
|
||||
else:
|
||||
self._wreg(reg, (self._rreg(reg) & (~ mask & 0xFF)) | (value << offset))
|
||||
time.sleep_ms(delay)
|
||||
|
||||
def reset(self):
|
||||
self._i2c.writeto_mem(_BOT035_ADDRESS, _BOT035_PWM, b' Ndddd\x00\x00\x00\x8c\xb0')
|
||||
@@ -77,24 +84,25 @@ class BOT035:
|
||||
else:
|
||||
self._wreg(_BOT035_LED + index, max(min(duty, 100), 0))
|
||||
|
||||
def tft_reset(self, value):
|
||||
self._wreg(_BOT035_CMD, (self._rreg(_BOT035_CMD) & 0x7F) | (value << 7))
|
||||
def tft_reset(self, value=None, delay=50):
|
||||
return self._bits(7, 0x80, value, delay)
|
||||
|
||||
def spk_en(self, value):
|
||||
self._wreg(_BOT035_CMD, (self._rreg(_BOT035_CMD) & 0xBF) | (value << 6))
|
||||
def spk_en(self, value=None, delay=10):
|
||||
return self._bits(6, 0x40, value, delay)
|
||||
|
||||
def cam_en(self, value):
|
||||
self._wreg(_BOT035_CMD, (self._rreg(_BOT035_CMD) & 0xDF) | (value << 5))
|
||||
|
||||
def cam_reset(self, value):
|
||||
self._wreg(_BOT035_CMD, (self._rreg(_BOT035_CMD) & 0xEF) | (value << 4))
|
||||
def cam_en(self, value=None, delay=500):
|
||||
"""Convert to high level effective"""
|
||||
value = value if value is None else ~ value & 0x01
|
||||
return self._bits(5, 0x20, value, delay)
|
||||
|
||||
def cam_reset(self, value=None, delay=50):
|
||||
return self._bits(4, 0x10, value, delay)
|
||||
|
||||
def asr_en(self, value=None, delay=500):
|
||||
self._wreg(_BOT035_CMD, (self._rreg(_BOT035_CMD) & 0xF3) | (value << 2))
|
||||
time.sleep_ms(delay)
|
||||
def asr_en(self, value=None, delay=700):
|
||||
return self._bits(2, 0x0C, value, delay)
|
||||
|
||||
def uart_select(self, value):
|
||||
self._wreg(_BOT035_CMD, (self._rreg(_BOT035_CMD) & 0xFC) | value)
|
||||
def uart_select(self, value=None, delay=50):
|
||||
return self._bits(0, 0x03, value, delay)
|
||||
|
||||
def rgb_sync(self, buffer, n=12):
|
||||
self._i2c.writeto_mem(_BOT035_ADDRESS, _BOT035_RGB, buffer if len(buffer) < n else buffer[:n])
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""
|
||||
SANT G2 -MixGo SANT EXT G2
|
||||
SANT GX -MixGo SANT EXT G3
|
||||
|
||||
MicroPython library for the SANT G2 (Expansion board for MixGo SANT)
|
||||
MicroPython library for the SANT GX (Expansion board for MixGo SANT)
|
||||
=======================================================
|
||||
@dahanzimin From the Mixly Team
|
||||
"""
|
||||
@@ -11,10 +11,8 @@ from tftlcd import LCD15
|
||||
class ST7789(uframebuf.FrameBuffer_Uincode):
|
||||
def __init__(self, width=240, height=240, reset=None, backlight=None, direction=1, font_address=0x700000):
|
||||
if reset is not None:
|
||||
reset(0)
|
||||
time.sleep_ms(50)
|
||||
reset(1)
|
||||
time.sleep_ms(100)
|
||||
reset(0, 50)
|
||||
reset(1, 100)
|
||||
self.display = LCD15(portrait=direction)
|
||||
self._width = width
|
||||
self._height = height
|
||||
|
||||
Reference in New Issue
Block a user