600|1

6

帖子

3

TA的资源

一粒金砂(中级)

楼主
 

【得捷电子Follow me第2期】任务3:控制WS2812B [复制链接]

 

【得捷电子Follow me第2期】任务3:控制WS2812B

本文会涉及通用的编程思维,十分推荐一个学习网站——菜鸟教程

 

import 的库如下

import board
import neopixel
import digitalio
import time

neopixel是一个外置库,是用来控制WS2812B

 

按键基础配置

# 按键基础配置
button = digitalio.DigitalInOut(board.BUTTON)
button.switch_to_input(pull=digitalio.Pull.UP)

板子上的按键是按下为低电平,所以要加上上拉电阻

 

WS2812B基础配置

# WS2812B 电源控制
power = digitalio.DigitalInOut(board.NEOPIXEL_POWER)
power.direction = digitalio.Direction.OUTPUT
power.value = True

# WS2812B设置
pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)
# 亮度
pixel.brightness = 0.5

首先,我们需要将WS2812B引脚置为高电平

neopixel.NeoPixel(board.NEOPIXEL, 1)  board.NEOPIXEL为WS2812B的控制引脚,后者为WS2812B的数量

 

颜色控制函数

def WS2812B(color):
    pixel.fill(((color&0x0000FF),(color&0x00FF00)>>8,(color&0xFF0000)>>16))

这里我定义了一个函数

pixel.fill()函数可以控制颜色,传递的参数为元组(不了解的可以去菜鸟教程);元组的元素有三个,分别为:R,G,B

那么我们这函数用途就很明显了,是想用一个十六进制数来控制WS2812B的颜色

 

主循环

color=0x0000FF
flag=False

while True:
    if  button.value==False:
        if flag==False:
            flag=True
            WS2812B(color=color)
            if color==0xFF0000:
                color=0X0000FF
            else :
                color<<=8
    elif button.value==True:
        flag=False

这里定义了一个color,flag来存储我们的WS2812B颜色数据和按键标志位

按键按下,color左移8位,color在0x0000FF,0x00FF00,0xFF0000之间循环

flag的用途为按键标志位,可以使我们按键按下时程序只执行一次

 

完整代码

import board
import neopixel
import digitalio
import time

# 按键基础配置
button = digitalio.DigitalInOut(board.BUTTON)
button.switch_to_input(pull=digitalio.Pull.UP)

# WS2812B 电源控制
power = digitalio.DigitalInOut(board.NEOPIXEL_POWER)
power.direction = digitalio.Direction.OUTPUT
power.value = True

# WS2812B设置
pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)
# 亮度
pixel.brightness = 0.5

def WS2812B(color):
    pixel.fill(((color&0x0000FF),(color&0x00FF00)>>8,(color&0xFF0000)>>16))

color=0x0000FF
flag=False

while True:
    if  button.value==False:
        if flag==False:
            flag=True
            WS2812B(color=color)
            if color==0xFF0000:
                color=0X0000FF
            else :
                color<<=8
    elif button.value==True:
        flag=False

 

最新回复

控制颜色的这个pixel.fill()函数比较厉害   详情 回复 发表于 2023-10-15 08:08
点赞 关注
 
 

回复
举报

6802

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

控制颜色的这个pixel.fill()函数比较厉害

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表