From 4a35042af2572e86ba78fc8b5d357895cd8a5b46 Mon Sep 17 00:00:00 2001 From: dahanzimin <353767514@qq.com> Date: Fri, 19 Jul 2024 20:39:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0mini=E7=9A=84lib=E5=9B=BA?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../origin/build/Mixgo_Mini_lib-v1.23.0.bin | Bin 1696352 -> 1696352 bytes .../origin/build/lib/ws2812x.py | 144 +++++++++--------- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/boards/default_src/micropython_esp32c2/origin/build/Mixgo_Mini_lib-v1.23.0.bin b/boards/default_src/micropython_esp32c2/origin/build/Mixgo_Mini_lib-v1.23.0.bin index 3046a876f6af3aa916dfc02b72d7f0d2873615e9..5d5ea79bc035a1dadcecdf4e7f5eacb936c7f810 100644 GIT binary patch delta 334 zcmaEGB>lmW^a&vxMg~^KrdFmV6AeW+7Ob~Z+;i%Izy|)9Uz&nGUy2^OHRmp#ps{?> z+*zJ`UCg^O|MPNgcC_E`u=#&|VFN2jui4a6Mr(zHY<#-B~dbu3ikNJ}{Yqp}o6@8Hibc zm=%cGfS4VKIe?fGh`E568;E&;m=}oofS4bM1%Ox(h=qVy7>GrHSQLoGfLI)eCAN3> rNNx#LG!lp|i0UlP{%rC?;X>3&W|=S2BAWZ}tjs^ImJ}+p;?EBNu84qe delta 334 zcmaEGB>lmW^a&vxhK5!K7FMQa6AeW+7Ob~Z+;r=io?@2ftFFQ)|9K`C8*OKQeQ(1Y z#&(zTnY*`5Gw5*N>}bE=Ve|j`!Uk55UdySajMfSaKTmAUd0{jCzm{P2y>r@i-Il3h zx^exPr~A5A=kyuoP8T#_4`^3lWCUWS?Fx*{3f 255: - return (0, 0, 0) - elif pos < 85: - return (pos * 3, 255 - pos * 3, 0) - elif pos < 170: - pos -= 85 - return (255 - pos * 3, 0, pos * 3) - else: - pos -= 170 - return (0, pos * 3, 255 - pos * 3) +""" +WS2812 RGB + +Micropython library for the WS2812 NeoPixel-RGB +======================================================= +@dahanzimin From the Mixly Team +""" +from time import sleep, sleep_us +from machine import bitstream + +class NeoPixel: + def __init__(self, pin, n, bpp=3, timing=1, ORDER=(1, 0, 2, 3)): + self.pin = pin + self.bpp = bpp + self.rgbs = n + self.ORDER = ORDER + self.rgb_buf = bytearray(self.rgbs * bpp) + self.timing = (((350, 850, 800, 400) if timing else (800, 1700, 1600, 900)) if isinstance(timing, int) else timing) + self.write() + + def __len__(self): + return self.rgbs + + def __setitem__(self, n, v): + for i in range(self.bpp): + self.rgb_buf[n * self.bpp + self.ORDER[i]] = v[i] + + def __getitem__(self, n): + return tuple(self.rgb_buf[n* self.bpp + self.ORDER[i]] for i in range(self.bpp)) + + def fill(self, v): + for i in range(self.bpp): + j = self.ORDER[i] + while j < self.rgbs * self.bpp: + self.rgb_buf[j] = v[i] + j += self.bpp + + def write(self): + self.pin.init(self.pin.OUT) + for _ in range(2): + bitstream(self.pin, 0, self.timing, self.rgb_buf) + sleep_us(50) + self.pin.init(self.pin.IN) + + def color_chase(self,R, G, B, wait): + for i in range(self.rgbs): + self.__setitem__(i,(R, G, B)) + self.write() + sleep(wait/1000) + + def rainbow_cycle(self, wait, clear=True): + for j in range(255): + for i in range(self.rgbs): + rc_index = (i * 256 // self.rgbs) + j + self.__setitem__(i,self.wheel(rc_index & 255)) + self.write() + sleep(wait / 1000 / 256) + if clear: + self.fill((0, 0, 0)) + self.write() + + def wheel(self,pos): + if pos < 0 or pos > 255: + return (0, 0, 0) + elif pos < 85: + return (pos * 3, 255 - pos * 3, 0) + elif pos < 170: + pos -= 85 + return (255 - pos * 3, 0, pos * 3) + else: + pos -= 170 + return (0, pos * 3, 255 - pos * 3)