ESP32(MicroPython) RGB点阵流水灯+滚动显示+同心矩形

ESP32 WS2812流水灯+滚动显示+同心矩形

 本程序实现了WS2812流水灯+滚动显示+同心矩形显示功能,延时和亮度可调。由于点阵的灯数不是3的倍数,在颜色选择上使用了类似于拜耳阵列排列,绿色像素数是红、蓝像素数之和。

在变量设定上,由于有渐变流水灯模式,本程序设定了较小的亮度用于确认渐变中每一级的亮度,又设定了另一个变量存储其它模式下的亮度以便使用。流水灯按灯的序号移动,分为渐变和非渐变两种模式。滚动显示在每次开始前要把起始的编号调到8的倍数以确保从一列的开头位置开始,每次起始位置序号加8以实现滚动。同心矩形显示先设定灯的颜色来绘制较大的矩形,在绘制较小的矩形覆盖大的矩形的中间部分,并对记录起始位置的变量取余以循环显示4种图案;绘制较小的矩形时每次到达一列中绘制位置的末端时把灯的编号加上相应数值以到达在下一列绘制的起始位置。

代码如下

#导入Pin模块
from machine import Pin
import time
from machine import PWM
from neopixel import NeoPixel
 
# 五向导航按键,COM引脚接GND
key1=Pin(12,Pin.IN,Pin.PULL_UP)
key2=Pin(14,Pin.IN,Pin.PULL_UP)
key3=Pin(26,Pin.IN,Pin.PULL_UP)
key4=Pin(25,Pin.IN,Pin.PULL_UP)
key5=Pin(33,Pin.IN,Pin.PULL_UP)
key6=Pin(32,Pin.IN,Pin.PULL_UP)
 
pin=13
rgb_num=64
rgb_led=NeoPixel(Pin(pin,Pin.OUT),rgb_num)

key_en=1
#按键扫描函数
def key_scan():
    global key_en
    if key_en==1 and (key1.value()==0 or key2.value()==0 or key3.value()==0 or key4.value()==0 or
                      key5.value()==0 or key6.value()==0  ):
        time.sleep_ms(10)
        key_en=0
        if key1.value()==0:
            return 1
        elif key2.value()==0:
            return 2
        elif key3.value()==0:
            return 3
        elif key4.value()==0:
            return 4
        elif key5.value()==0:
            return 5
        elif key6.value()==0:
            return 6
    elif (key1.value()==1 and key2.value()==1 and key3.value()==1 and key4.value()==1 and
          key5.value()==1 an
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路易斯720

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值