【掌控】mpython_28…掌控WS2812 灯带&七彩灯世界

2018-11-151.6万
AI 快速预览详细 收起
本教程介绍了如何使用掌控板和Python代码控制WS2812 LED彩带,实现多种灯光效果。首先介绍了掌控板的输入输出引脚,然后通过具体的代码示例展示了如何点亮整条灯带、点亮第n个灯、实现流水灯效果等。最后还提供了一个经大圣老师验证过的官方例程,包含了白色流水灯效、蓝色背景暗灯流水灯效、红色呼吸灯效等多种灯光效果。通过这些实验,孩子们可以初步学习掌控板模拟引脚的使用,并练习WS2812 LED彩带的各种代码控制,激发创造力。
NeoPixels也被称为WS2812 LED彩带,是连接在一起的全彩色led灯串。你可以设置他它们的红色,绿色和蓝色值, 在0到255之间。neopixel模块可通过精确的时间控制,生成WS2812控制信号。
【掌控】mpython_28…掌控WS2812 灯带&七彩灯世界图1

【实验目的】
1、认识掌控输入输出引脚,初步学习掌控模拟引脚的使用
2、练习WS2812 LED彩带的各种代码控制,实现炫目效果。

【器材准备】
1、掌控板        1
2、DF micro:bit电机扩展板 1 (含电源线)【掌控】mpython_28…掌控WS2812 灯带&七彩灯世界图4
3、WS2812 LED彩灯带   1(本例使用了DF的30灯灯带)

【1】点亮整条灯带

【掌控】mpython_28…掌控WS2812 灯带&七彩灯世界图2

[mw_shl_code=python,true]from mpython import *
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(p16, n=30, bpp=3, timing = 1)  
# 输出引脚 n LED灯的个数 bpp:3:默认为3元组RGB timing:默认等于0,为400KHz速率;等于1,为800KHz速率
np.fill((50, 0, 50))  # 填充所有LED像素 r g b 取值0-255
np.write()  # 数据写入执行[/mw_shl_code]

【2】点亮第n个灯

[mw_shl_code=python,true]from mpython import *
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(p16, n=30, bpp=3, timing = 1)  
# 输出引脚 n LED灯的个数 bpp:3:默认为3元组RGB timing:默认等于0,为400KHz速率;等于1,为800KHz速率

np[0] = (255, 255, 255) # 设置第一个LED像素为白色
np.write()  # 数据写入执行[/mw_shl_code]

【3】流水灯
[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(p16, n=30, bpp=3, timing = 1)  
# 输出引脚 n LED灯的个数 bpp:3:默认为3元组RGB timing:默认等于0,为400KHz速率;等于1,为800KHz速率

while True:
    for i in range(30):
        np.fill((0, 0, 0))
        np = (255, 0, 255) # 改变颜色
np.write()  # 数据写入执行
        time.sleep_ms(10)  # 改变时间[/mw_shl_code]

【4】经大圣老师验证过的官方例程这个例程可厉害,研究好了,可以学好多东西。

【掌控】mpython_28…掌控WS2812 灯带&七彩灯世界图3



[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(p16, n=30, bpp=3, timing = 1)  
# 输出引脚 n LED灯的个数 bpp:3:默认为3元组RGB timing:默认等于0,为400KHz速率;等于1,为800KHz速率

def demo(np):
  n = np.n

  # cycle  白色流水灯效
  for i in range(4 * n):
    for j in range(n):
      np[j] = (0, 0, 0)
    np[i % n] = (255, 255, 255)
    np.write()
    time.sleep_ms(25)

  # bounce  蓝色背景 暗灯流水灯效
  for i in range(4 * n):
    for j in range(n):
      np[j] = (0, 0, 128)
    if (i // n) % 2 == 0:
      np[i % n] = (0, 0, 0)
    else:
      np[n - 1 - (i % n)] = (0, 0, 0)
    np.write()
    time.sleep_ms(50)

  # fade in/out  红色呼吸灯效
  for i in range(0, 4 * 256, 8):
    for j in range(n):
      if (i // 256) % 2 == 0:
        val = i & 0xff
      else:
        val = 255 - (i & 0xff)
      np[j] = (val, 0, 0)
    np.write()

  # clear  灭灯
  for i in range(n):
   np = (0, 0, 0)
  np.write()

while True:

  demo(np)[/mw_shl_code]

【扩展练习】
自己玩起来吧。
超多灯效可玩。




创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(3)
liuyu1009
liuyu1009
我买了商城里的灯带,加掌控板自家的扩展板,怎么也点不亮,是因为工作电压不够吗?扩展板提供的是3v3的,灯带需要5v的
liuyu1009
liuyu1009
求详细教程,例如线如何连接等等,小白求助
rzyzzxw
rzyzzxw
作者
回复liuyu1009
mPythonX中有图形化编程,也自带例程。接线自定义。MIND+中也很方便编程。
44107900
44107900
DF micro:bit电机扩展板可以插掌控板?哪里有销售?
rzyzzxw
rzyzzxw
作者
回复44107900
扩展板名字上有链接的。https://www.dfrobot.com.cn/goods-1730.html
- 没有更多了 -