1673|2

331

帖子

5

TA的资源

纯净的硅(中级)

楼主
 

【国产RISC-V Linux板 昉·星光VisionFive试用报告】Python点亮炫彩灯环 [复制链接]

 

在之前的分享中,我讲过使用C语言,直接操作spi设备,来控制WS2812B灯珠,原文可见:C语言编程控制WS2812B炫彩灯珠

这一次,我们使用Python语言来控制。

得益于Python的可扩展性,已经有很多爱好者,做出了各种WS2812B的控制模块,经过一番研究,我选择了ws2812-spi,其官网地址为:

链接已隐藏,如需查看请登录或者注册

ws2812-spi模块,本来是给树莓派写的,但是在星光派上面,也能够正常使用。

 

首先是接线,还是参考上次的接线:

但我这次用的是炫彩灯环:

 不过接线方式完全一样,因为WS2812B系列,都是VCC、GND、DIN的。

同样注意,需要使用额外的电源,给WS1812B供电,不要用板载的5V。

 

然后,要先安装下面的模块,以便python能够操作spi设备:

  • git clone https://github.com/doceme/py-spidev.git
  • cd py-spidev
  • make
  • make install

安装好以后,就可以下载ws2812-spi的代码了:

  • git clone https://github.com/joosteto/ws2812-spi.git
  • cd ws2812-spi

再编写一个下面的Python程序:

  • import spidev
  • import sys
  • import time
  • sys.path.append("./")
  • import ws2812
  • spi = spidev.SpiDev()
  • spi.open(0,0)
  • # write2812=write2812_pylist8
  • nLED=24
  • ledArray = [[0,0,0]]*nLED
  • print(ledArray)
  • ws2812.write2812(spi, ledArray)
  • time.sleep(1)
  • #write 4 WS2812's, with the following colors: red, green, blue, yellow
  • # ws2812.write2812(spi, [[10,0,0], [0,10,0], [0,0,10], [10, 10, 0]])
  • for n in range(0,100):
  • for i in range(0,nLED):
  • if i > 0:
  • ledArray[i-1] = [0, 0, 0]
  • # ws2812.write2812(spi, ledArray)
  • # time.sleep(0.5)
  • else:
  • ledArray[nLED-1] = [0, 0, 0]
  • if i % 7 ==0:
  • ledArray[i] = [100, 0, 0]
  • if i % 7 ==1:
  • ledArray[i] = [0, 100, 0]
  • if i % 7 ==2:
  • ledArray[i] = [0, 0, 100]
  • if i % 7 ==3:
  • ledArray[i] = [100, 100, 0]
  • if i % 7 ==4:
  • ledArray[i] = [100, 0, 100]
  • if i % 7 ==5:
  • ledArray[i] = [0, 100, 100]
  • if i % 7 ==6:
  • ledArray[i] = [100, 100, 100]
  • print(ledArray)
  • ws2812.write2812(spi, ledArray)
  • time.sleep(0.05)

将上述代码,保存为test.py,以便后续执行。

 

在上述代码中,其逻辑如下:

  1. 先打开spi设备,使用:

    spi = spidev.SpiDev()

    spi.open(0,0)

  2. 再将所有的灯熄灭:

    nLED=24

    ledArray = [[0,0,0]]*nLED

    ws2812.write2812(spi, ledArray)

  3. 然后循环,依次点亮下灯,并关闭上一课;根据循环的灯珠,来自动设定颜色

    ws2812.write2812(spi, ledArray)的第二个参数,就是一个颜色数组:[r, g, b],取值为0-255

编写完成后,使用`python test.py执行`,就能点亮了灯环了。

 

最终的实际效果如下:

播放器加载失败: 未检测到Flash Player,请到安装
1659406119560915

 

通过以上的代码,就能够控制这个炫彩灯环了。

如果进一步研究,你还可以考虑,根据简谱中的1234567,来设置点亮的灯珠个数,实现跟着音乐跳动,效果会更棒!

最新回复

万板第一步皆是点灯 我还是喜欢喇叭唱歌  详情 回复 发表于 2022-8-2 19:06
点赞 关注
 
 

回复
举报

7211

帖子

11

TA的资源

版主

沙发
 
楼主的作品非常棒,创意非凡,感谢分享!
 
 
 

回复

4999

帖子

12

TA的资源

版主

板凳
 

万板第一步皆是点灯 我还是喜欢喇叭唱歌

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
报名最后一周!2025 英飞凌消费、计算与通讯创新大会-北京站
会议时间:3月18日(周二)09:30签到
参会奖励:电动螺丝刀套装、户外登山包、京东卡

查看 »

 
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
快速回复 返回顶部 返回列表