7020| 0
|
[入门教程] 【掌控】mpython_29…掌控WS2812灯带&彩虹灯效 |
哪里有彩虹告诉我 能不能把我的愿望还给我 听杰伦的彩虹 写彩虹灯效的帖子 【小目标】 1、用掌控实现彩虹灯效 2、尝试实现动起来的彩虹灯效 【器材】 1、掌控板 1 2、DF micro:bit电机扩展板 1(带电源线) 3、30灯WSDL812灯带 4、浪漫的心情 少许 【效果】 【代码】 [mw_shl_code=python,true]# 源代码来自邵子扬老师 # 汝州一中大圣老师修改测试 from mpython import * import time import machine, neopixel # 定义引脚 经不完全测试 如下引脚可用 p8 = machine.Pin(26) p13 = machine.Pin(18) p14 = machine.Pin(19) p15 = machine.Pin(21) p16 = machine.Pin(5) np = neopixel.NeoPixel(p13, n=30, bpp=3, timing = 1) # 输出引脚 n LED灯的个数 bpp:3:默认为3元组RGB timing:默认等于0,为400KHz速率;等于1,为800KHz速率 # 定义彩虹灯效 def np_rainbow(np, num, bright=32, offset = 0): rgb = ((255,0,0), (255,127,0), (255,255,0), (0,255,0), (0,255,255),(0,0,255),(136,0,255), (255,0,0)) for i in range(num): t = 7*i/num t0 = int(t) r = round((rgb[t0][0] + (t-t0)*(rgb[t0+1][0]-rgb[t0][0]))*bright)>>8 g = round((rgb[t0][1] + (t-t0)*(rgb[t0+1][1]-rgb[t0][1]))*bright)>>8 b = round((rgb[t0][2] + (t-t0)*(rgb[t0+1][2]-rgb[t0][2]))*bright)>>8 np[(i+offset)%num] = (r, g, b) np_rainbow(np, 30, bright=255, offset=0) # 设置彩虹条的长度、亮度、偏移量等参数 np.write() # 执行数据写入[/mw_shl_code] 【扩展】 渐渐增多的彩虹灯 [mw_shl_code=python,true]# 代码前面相同 while 1: for j in range(31): np.fill((0, 0, 0)) np_rainbow(np, j, bright=255, offset=0) # 设置彩虹条的长度、亮度、偏移量等参数 np.write() # 执行数据写入 time.sleep(0.1)[/mw_shl_code] 【旋转的彩虹】 [mw_shl_code=python,true]n = 0 while 1: np_rainbow(np, 30, bright=255, offset=n) # 设置彩虹条的长度、亮度、偏移量等参数 n += 1 np.write() # 执行数据写入 time.sleep(0.1)[/mw_shl_code] 将 n+=1 改为 n-=1就可以变为反向旋转。 感谢邵子扬老师论坛教程。 https://www.micropython.org.cn/bbs/forum.php?mod=viewthread&tid=790 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed