试着点亮ws2812b

STM32系列
pyboard相关
zl_cq
帖子: 118
注册时间: 2020年 6月 9日 17:19

Re: 试着点亮ws2812b

#11

帖子 zl_cq »

pyboardCN V2板子的最新固件版本是v1.18,?

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: 试着点亮ws2812b

#12

帖子 shaoziyang »

pyboardCN V2 上,LED的定义和官方板子是一样的,
  • LED1=A13
  • LED2=A14
  • LED3=A15
  • LED4=B4
你的代码改成A15就可以了

代码: 全选

from pyb import Pin, Timer, pwm
tim = Timer(2, freq=800000)
AA = tim.channel(1, Timer.PWM, pin=Pin.cpu.A15)
AA.pulse_width_percent(68)
 

zl_cq
帖子: 118
注册时间: 2020年 6月 9日 17:19

Re: 试着点亮ws2812b

#13

帖子 zl_cq »

我把pyboardCN v2板子的固件升级到v1.18版本,还是没有neopixel模块。?
最新的版本是多少呀?

zl_cq
帖子: 118
注册时间: 2020年 6月 9日 17:19

Re: 试着点亮ws2812b

#14

帖子 zl_cq »

固件升级v1.18.png
固件升级v1.18.png (12.9 KiB) 查看 1759 次
 

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: 试着点亮ws2812b

#15

帖子 shaoziyang »

zl_cq 写了:
2022年 8月 11日 16:00
我把pyboardCN v2板子的固件升级到v1.18版本,还是没有neopixel模块。?
最新的版本是多少呀?

 
STM32的板子固件没有集成neopixel,esp32等集成了。可以将micropython源码中drivers\neopixel目录下的neopixel.py复制进去使用。或者复制下面代码

代码: 全选

# NeoPixel driver for MicroPython
# MIT license; Copyright (c) 2016 Damien P. George, 2021 Jim Mussared

from machine import bitstream


class NeoPixel:
    # G R B W
    ORDER = (1, 0, 2, 3)

    def __init__(self, pin, n, bpp=3, timing=1):
        self.pin = pin
        self.n = n
        self.bpp = bpp
        self.buf = bytearray(n * bpp)
        self.pin.init(pin.OUT)
        # Timing arg can either be 1 for 800kHz or 0 for 400kHz,
        # or a user-specified timing ns tuple (high_0, low_0, high_1, low_1).
        self.timing = (
            ((400, 850, 800, 450) if timing else (800, 1700, 1600, 900))
            if isinstance(timing, int)
            else timing
        )

    def __len__(self):
        return self.n

    def __setitem__(self, i, v):
        offset = i * self.bpp
        for i in range(self.bpp):
            self.buf[offset + self.ORDER[i]] = v[i]

    def __getitem__(self, i):
        offset = i * self.bpp
        return tuple(self.buf[offset + self.ORDER[i]] for i in range(self.bpp))

    def fill(self, v):
        b = self.buf
        l = len(self.buf)
        bpp = self.bpp
        for i in range(bpp):
            c = v[i]
            j = self.ORDER[i]
            while j < l:
                b[j] = c
                j += bpp

    def write(self):
        # BITSTREAM_TYPE_HIGH_LOW = 0
        bitstream(self.pin, 0, self.timing, self.buf)

zl_cq
帖子: 118
注册时间: 2020年 6月 9日 17:19

Re: 试着点亮ws2812b

#16

帖子 zl_cq »

利用类模块NeoPixel点亮了ws2812b上的灯,并可以自己选择颜色了。
现在,还在继续摸索使用方法。
问题:点亮的灯怎么熄灭呢?

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: 试着点亮ws2812b

#17

帖子 shaoziyang »

没有单独的关闭命令,需要把颜色设置为0。

如:

np.fill([0,0,0])
np.write()

zl_cq
帖子: 118
注册时间: 2020年 6月 9日 17:19

Re: 试着点亮ws2812b

#18

帖子 zl_cq »

灯的颜色连续变化。自己录的灯颜色连续变化的短视频怎么上传?
灯颜色连续变化1.png
灯颜色连续变化1.png (3.3 KiB) 查看 1572 次
 图片

zl_cq
帖子: 118
注册时间: 2020年 6月 9日 17:19

Re: 试着点亮ws2812b

#19

帖子 zl_cq »

今天,我把六块ws2812b的板子连在了一起,组成了一个高24个灯、宽16个灯的阵列。
随后,逐个点亮这些灯。蓝色和绿色都正常,从第一个灯逐个亮到了最后一个灯。可红灯逐个亮起超过一半后,颜色就开始乱了,最后还有十七个灯不亮。
试了三遍都是如此,为什么呢?

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: 试着点亮ws2812b

#20

帖子 shaoziyang »

贴代码看看

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章