更新 mini固件,RGB 支持老版本21812,LED灯颜色立即生效

This commit is contained in:
dahanzimin
2024-09-13 14:51:32 +08:00
parent 6185efc550
commit c195171ae9
6 changed files with 98 additions and 97 deletions

View File

@@ -228,6 +228,7 @@ class BOT035(FrameBuffer):
"""Reset SPK, PWM, HID registers to default state""" """Reset SPK, PWM, HID registers to default state"""
self._i2c.writeto_mem(_BOT035_ADDRESS, _BOT035_SPK, b'\x0A\x00\x00\x00\x20\x4E\x64\x64') self._i2c.writeto_mem(_BOT035_ADDRESS, _BOT035_SPK, b'\x0A\x00\x00\x00\x20\x4E\x64\x64')
if self._version: self._i2c.writeto_mem(_BOT035_ADDRESS, _BOT035_KB, bytes(9)) if self._version: self._i2c.writeto_mem(_BOT035_ADDRESS, _BOT035_KB, bytes(9))
def get_brightness(self): def get_brightness(self):
return self._brightness return self._brightness

View File

@@ -164,6 +164,7 @@ class LED:
def setcolor(self, index, color): def setcolor(self, index, color):
self._col[index-1] = color self._col[index-1] = color
self.setbrightness(index, 100)
def getcolor(self, index): def getcolor(self, index):
return self._col[index-1] return self._col[index-1]

View File

@@ -1,94 +1,94 @@
""" """
Radio-ESP-NOW(ESP32-C2) Radio-ESP-NOW(ESP32-C2)
Micropython library for the Radio-ESP-NOW(ESP32-C2) Micropython library for the Radio-ESP-NOW(ESP32-C2)
======================================================= =======================================================
@dahanzimin From the Mixly Team @dahanzimin From the Mixly Team
""" """
import espnow import espnow
from ubinascii import hexlify,unhexlify from ubinascii import hexlify,unhexlify
import network import network
class ESPNow(espnow.ESPNow): class ESPNow(espnow.ESPNow):
def __init__(self,channel=1,txpower=20): def __init__(self,channel=1,txpower=20):
super().__init__() super().__init__()
self.active(True) self.active(True)
self._channel = channel self._channel = channel
self._txpower = txpower self._txpower = txpower
self._nic = network.WLAN(network.STA_IF) self._nic = network.WLAN(network.STA_IF)
self._nic.active(True) self._nic.active(True)
self._nic.config(channel=self._channel,txpower=self._txpower) self._nic.config(channel=self._channel,txpower=self._txpower)
def send(self,peer,msg): def send(self,peer,msg):
'''Send data after error reporting and effective processing''' '''Send data after error reporting and effective processing'''
try: try:
_peer=unhexlify(peer) _peer=unhexlify(peer)
return super().send(_peer, str(msg)) return super().send(_peer, str(msg))
except OSError as err: except OSError as err:
if len(err.args) < 2: if len(err.args) < 2:
raise err raise err
if err.args[1] == 'ESP_ERR_ESPNOW_NOT_INIT': if err.args[1] == 'ESP_ERR_ESPNOW_NOT_INIT':
raise OSError("Radio(ESPNOW) is not activated, unable to transmit data") raise OSError("Radio(ESPNOW) is not activated, unable to transmit data")
elif err.args[1] == 'ESP_ERR_ESPNOW_IF': elif err.args[1] == 'ESP_ERR_ESPNOW_IF':
self._nic.active(True) self._nic.active(True)
elif err.args[1] == 'ESP_ERR_ESPNOW_NOT_FOUND': elif err.args[1] == 'ESP_ERR_ESPNOW_NOT_FOUND':
self.add_peer(_peer) self.add_peer(_peer)
return super().send(_peer, str(msg)) return super().send(_peer, str(msg))
elif err.args[1] == 'ESP_ERR_ESPNOW_NO_MEM': elif err.args[1] == 'ESP_ERR_ESPNOW_NO_MEM':
raise OSError("internal ESP-NOW buffers are full") raise OSError("internal ESP-NOW buffers are full")
elif err.args[1] == 'ESP_ERR_ESPNOW_ARG': elif err.args[1] == 'ESP_ERR_ESPNOW_ARG':
raise OSError("invalid argument") raise OSError("invalid argument")
else: else:
raise err raise err
def recv(self): def recv(self):
'''Receive data''' '''Receive data'''
if self.any(): if self.any():
host, msg = super().recv() host, msg = super().recv()
return hexlify(host).decode(),msg.decode() return hexlify(host).decode(),msg.decode()
else : else :
return None,None return None,None
def set_channel(self,channel=None,txpower=None): def set_channel(self,channel=None,txpower=None):
self._channel = self._channel if channel is None else channel self._channel = self._channel if channel is None else channel
self._nic.config(channel=self._channel, txpower=self._txpower if txpower is None else txpower) self._nic.config(channel=self._channel, txpower=self._txpower if txpower is None else txpower)
def _cb_handle(self, ee): def _cb_handle(self, ee):
'''Callback processing conversion''' '''Callback processing conversion'''
host, msg = super().recv() host, msg = super().recv()
if self._on_handle: if self._on_handle:
if isinstance(self._on_handle, list): if isinstance(self._on_handle, list):
for func in self._on_handle: for func in self._on_handle:
cmd = func.__name__.rfind('__') cmd = func.__name__.rfind('__')
if cmd != -1: if cmd != -1:
cmd=func.__name__[cmd+2:] cmd=func.__name__[cmd+2:]
if cmd == str(msg.decode()): if cmd == str(msg.decode()):
func(hexlify(host).decode(), msg.decode()) func(hexlify(host).decode(), msg.decode())
else: else:
func(hexlify(host).decode(), msg.decode()) func(hexlify(host).decode(), msg.decode())
else: else:
self._on_handle(hexlify(host).decode(), msg.decode()) self._on_handle(hexlify(host).decode(), msg.decode())
def recv_cb(self, recv_cbs): def recv_cb(self, recv_cbs):
'''Receive callback''' '''Receive callback'''
self._on_handle = recv_cbs self._on_handle = recv_cbs
if recv_cbs: if recv_cbs:
self.irq(self._cb_handle) self.irq(self._cb_handle)
def info(self): def info(self):
'''Get the paired Mac and rssi''' '''Get the paired Mac and rssi'''
_info=[] _info=[]
for i in self.peers_table: for i in self.peers_table:
_info.append((hexlify(i).decode(),self.peers_table[i][0])) _info.append((hexlify(i).decode(),self.peers_table[i][0]))
return _info return _info
@property @property
def mac(self): def mac(self):
'''Get mac address''' '''Get mac address'''
return hexlify(self._nic.config('mac')).decode() return hexlify(self._nic.config('mac')).decode()
@property @property
def channel(self): def channel(self):
'''Get mac address''' '''Get mac address'''
return self._nic.config('channel') return self._nic.config('channel')

View File

@@ -37,9 +37,8 @@ class NeoPixel:
def write(self): def write(self):
self.pin.init(self.pin.OUT, value=0) self.pin.init(self.pin.OUT, value=0)
sleep_us(40) bitstream(self.pin, 0, self.timing, bytes(3) + self.rgb_buf)
bitstream(self.pin, 0, self.timing, bytes(3)+self.rgb_buf) sleep_us(150)
sleep_us(40)
self.pin.init(self.pin.IN) self.pin.init(self.pin.IN)
def color_chase(self,R, G, B, wait): def color_chase(self,R, G, B, wait):