更新sant的库,修复asr_en, key_adc, bot端口操作

This commit is contained in:
dahanzimin
2025-05-27 13:42:46 +08:00
parent 6d9f2f1ca6
commit e9b544106c
6 changed files with 42 additions and 34 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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):

View File

@@ -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])

View File

@@ -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
"""

View File

@@ -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