立即注册

micropython-microbit 中文社区

查看: 964|回复: 1

[原创] 灯带的彩虹条驱动

[复制链接]
  • TA的每日心情
    开心
    2019-5-12 11:06
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2018-2-18 15:33:57 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    在nakecode中,灯带有专门的彩虹条显示,可以让灯带以彩虹方式渐变。在python中,没有直接提供这样的函数,因此我写了一个,给大家参考。

    1. from microbit import *
    2. import neopixel

    3. np = neopixel.NeoPixel(pin1 ,32)

    4. def np_rainbow(np, num, bright=32, offset = 0):
    5.     rb = ((255,0,0), (255,127,0), (255,255,0), (0,255,0), (0,255,255),(0,0,255),(136,0,255), (255,0,0))
    6.     for i in range(num):
    7.         t = 7*i/num
    8.         t0 = int(t)
    9.         r = round((rb[t0][0] + (t-t0)*(rb[t0+1][0]-rb[t0][0]))*bright)>>8
    10.         g = round((rb[t0][1] + (t-t0)*(rb[t0+1][1]-rb[t0][1]))*bright)>>8
    11.         b = round((rb[t0][2] + (t-t0)*(rb[t0+1][2]-rb[t0][2]))*bright)>>8
    12.         np[(i+offset)%num] = (r, g, b)

    13. np_rainbow(np, 32, bright=16, offset=0)
    14. np.show()
    复制代码


    可以通过np_rainbow()函数,设置彩虹条的长度、亮度、偏移量等参数,适合不同型号的灯带(如果需要在灯板上显示,需要做少量修改)。
    如果我们定时修改偏移量,就可以实现选择彩虹的效果。如:

    1. n = 0
    2. while 1:
    3.     np_rainbow(np, 32, offset = n)
    4.     np.show()
    5.     n += 1
    6.     s leep(100)
    复制代码

    将 n+=1 改为 n-=1就可以变为反向旋转。

    本帖被以下淘专辑推荐:

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-12 11:06
  • 签到天数: 8 天

    [LV.3]偶尔看看II

     楼主| 发表于 2018-2-18 15:35:17 | 显示全部楼层
    这个驱动也适合ESP8266/ESP32.
    回复 支持 反对

    使用道具 举报

    游客
    回复
    您需要登录后才可以回帖 登录 | 立即注册

    Archiver|手机版|小黑屋|micropython-microbit 中文社区

    GMT+8, 2019-10-16 03:05 , Processed in 0.092222 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表