【得捷电子Follow me第2期】+任务3:控制WS2812B
[复制链接]
在开发板上优异内置地RGB NeoPixel状态指示灯。可以通过编写CircutPython代码来实现对LED的颜色和亮度调节。
1.硬件介绍
NeoPixel是Adafruit产品WS281X系列中的可寻址LED灯,其包含了红、绿、蓝三色LED各一个,通过一个控制引脚来实现对其的控制。由于其极小的封装特别适合用于板上信息提示以及其他有趣的应用。
2.控制NeoPixel不同颜色间切换
在CircutPython环境中控制NeoPixel需要在CIRCUTPY的lib库中添加neopixel.mpy和adafruit_pixelbuf.mpy这两个库。
neopixel.mpy中提供了用于控制LED灯的函数,在实现对RGB灯的控制前,调用neopixel.NeoPixel()实例化一个实例,并对其管脚和模块个数进行初始化。并通过对neopixel提供的成员变量和函数(这里使用brightness成员变量调节亮度,使用fill()成员函数调节颜色)实现对LED亮度和颜色的控制。
在code.py中添加以下代码,从而实现RGB灯不同颜色之间的切换。
# 在这里写上你的代码 :-)
# SPDX-FileCopyrightText: 2021 Kattni Rembor for Adafruit Industries
# SPDX-License-Identifier: MIT
"""CircuitPython status NeoPixel red, green, blue example."""
import time
import board
import neopixel
pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)
pixel.brightness = 0.3
while True:
pixel.fill((255, 0, 0))
time.sleep(0.5)
pixel.fill((0, 255, 0))
time.sleep(0.5)
pixel.fill((0, 0, 255))
time.sleep(0.5)
效果如视频所示:
任务三RGB
3.控制NeoPixel实现彩虹灯的效果
在Adafruit提供的colorwheel库中,调用rainbow()函数可以根据给定参数控制彩虹灯的变换速度,调用方法十分简单。示例代码如下:
# SPDX-FileCopyrightText: 2021 Kattni Rembor for Adafruit Industries
# SPDX-License-Identifier: MIT
"""CircuitPython status NeoPixel rainbow example."""
import time
import board
from rainbowio import colorwheel
import neopixel
pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)
pixel.brightness = 0.3
def rainbow(delay):
for color_value in range(255):
pixel[0] = colorwheel(color_value)
time.sleep(delay)
while True:
rainbow(0.02)
效果如视频所示:
任务三彩虹灯
4.总结
Adafruit对于板上外设的使用方法提供了全方位的封装,并且在官方网站上提供了丰富演示样例,可以让开发者快速上手,快速搭建出有趣的应用。十分感谢EEWorld论坛和得捷电子提供的这次学习机会。
|