社区导航

 

搜索
查看: 318|回复: 4

[求助] 内置ws2811的8位全彩LED模块

[复制链接]

14

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2020-5-9 12:39 | 显示全部楼层 |阅读模式

鎵规敞 2020-05-09 122921.png

鎵规敞 2020-05-09 123215.png

请教大神:

0.5us怎么延时?用time.sleep(0.0000005)?

time.sleep_us()里面不能用小数

C语言里看到别人都是用__nop()的,Micropython里没有吧?当然这样延时并不精确,控制多个LED的时候会不正常的。

有人说用SPI的DMA模式,MciroPython好像也没有吧?

请教WS2811怎么控制?

 

 

鎵规敞 2020-05-09 123306.png


回复

使用道具 举报

1万

TA的帖子

13

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2020-5-9 19:36 | 显示全部楼层

在micropython中,nrf/esp8266/esp32内置了WS2812驱动,可以通过NeoPixel库直接使用,大部分GPIO都可以驱动。

 

STM32中没有直接集成,但是网上有通过SPI的MOSI引脚驱动的程序。



回复

使用道具 举报

1万

TA的帖子

13

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2020-5-9 19:47 | 显示全部楼层

 官方的例程

 

from machine import Pin
from neopixel import NeoPixel

pin = Pin(0, Pin.OUT)   # set GPIO0 to output to drive NeoPixels
np = NeoPixel(pin, 8)   # create NeoPixel driver on GPIO0 for 8 pixels
np[0] = (255, 255, 255) # set the first pixel to white
np.write()              # write data to all pixels
r, g, b = np[0]         # get first pixel colour

 



回复

使用道具 举报

14

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-5-9 21:43 | 显示全部楼层

首先谢谢大神。

本来是想按官方文档的时序写驱动,可是发现怎么写,都只能点亮灯,不能灭。

百度了很多人的程序,大家都说这个延时掌握不了,或者说MicroPython根本做不到毫秒级以下的延时。

本着死磕的精神,去研究了下单步执行的时间。

我做了个1000步的循环,里面就做一个操作(置低电平),结果是9111毫秒,也就是平均每步要用9毫秒,

WS2811要做0.5毫秒的延时,根本做不出来,所以全部做成1码了,所以灯只亮不灭。

所以这条路只好放弃了。



回复

使用道具 举报

14

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-5-9 22:03 | 显示全部楼层

找了个WS2812的驱动,用SPI的MOSI脚发送数据,可以完美控制。

谢谢大神。



回复

使用道具 举报

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

关闭

站长推荐上一条 1/8 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

词云| Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-7-15 18:55 , Processed in 0.183936 second(s), 25 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表