【全网最详细】 树莓派控制ws2812b灯带 点亮教程
博主拿到一块ws2812b灯带, 就想着赶紧尝试点亮,但是发现一不会连线 二不会代码
可谓是一窍不通,网上的教程也都不是特别详细,我经过多次踩坑终于成功点亮。于是我便想把我的开发过程重温一遍。
应该是最详细的了。
需要材料:
1、已经成功连接显示器的树莓派开发板(具体没有什么要求)
2、ws2812b灯带
3、杜邦线三根 公对母(一段是接口 ,一端是针脚)
一、连线
对于灯带,如果只有一串的话只需要将其带插头的一端连上即可。其带针脚一端是多组灯带串联时候用。
然后要知道,对于要连的三根线,红色是正级,绿色是信号线,白色是负极。这个要结合树莓派的针脚,对应连接
最后要知道,树莓派的针脚, 标有5V的代表是正极 输出5V电压(这里灯带需要的就是5V电压), 标有GND的 应该接负极, 之后与信号线相接的有许多,这里用标有#18的针脚。
这样就算接线完成了
二、代码部分
这里需要第三方库 rpi_ws281x 库
在终端(ctrl + alt + t)中通过pip下载该库
推荐使用sudo pip3 install rpi_ws281x
其他指令安装可能对点亮有影响
之后在py文件中复制以下代码
import time
from rpi_ws281x import PixelStrip, Color
import argparseLED_COUNT = 16 # LED灯的个数
LED_PIN = 18 # DI端接GPIO18# 以下可以不用改
LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz)
LED_DMA = 10 # DMA channel to use for generating signal (try 10)
LED_BRIGHTNESS = 255 # Set to 0 for darkest and 255 for brightest
LED_INVERT = False # True to invert the signal (when using NPN transistor level shift)
LED_CHANNEL = 0 # set to '1' for GPIOs 13, 19, 41, 45 or 53# 以下为LED模式变换的各个函数
def colorWipe(strip, color, wait_ms=20):"""一次擦除显示像素的颜色."""for i in range(strip.numPixels()):strip.setPixelColor(i, color)strip.show()time.sleep(wait_ms / 1000.0)def theaterChase(strip, color, wait_ms=50, iterations=10):"""电影影院灯光风格的追逐动画."""for j in range(iterations):for q in range(3):for i in range(0, strip.numPixels(), 3):strip.setPixelColor(i + q, color)strip.show()time.sleep(wait_ms / 1000.0)for i in range(0, strip.numPixels(), 3):strip.setPixelColor(i + q, 0)def wheel(pos):"""生成横跨0-255个位置的彩虹颜色."""if pos < 85:return Color(pos * 3, 255 - pos * 3, 0)elif pos < 170:pos -= 85return Color(255 - pos * 3, 0, pos * 3)else:pos -= 170return Color(0, pos * 3, 255 - pos * 3)def rainbow(strip, wait_ms=20, iterations=1):"""绘制彩虹,褪色的所有像素一次."""for j in range(256 * iterations):for i in range(strip.numPixels()):strip.setPixelColor(i, wheel((i + j) & 255))strip.show()time.sleep(wait_ms / 1000.0)def rainbowCycle(strip, wait_ms=10, iterations=5):"""画出均匀分布在所有像素上的彩虹."""for j in range(256 * iterations):for i in range(strip.numPixels()):strip.setPixelColor(i, wheel((int(i * 256 / strip.numPixels()) + j) & 255))strip.show()time.sleep(wait_ms / 1000.0)def theaterChaseRainbow(strip, wait_ms=50):"""旋转的彩色灯光."""for j in range(256):for q in range(3):for i in range(0, strip.numPixels(), 3):strip.setPixelColor(i + q, wheel((i + j) % 255))strip.show()time.sleep(wait_ms / 1000.0)for i in range(0, strip.numPixels(), 3):strip.setPixelColor(i + q, 0)# Main program logic follows:
if __name__ == '__main__':# Process argumentsparser = argparse.ArgumentParser()parser.add_argument('-c', '--clear', action='store_true', help='clear the display on exit')args = parser.parse_args()# Create NeoPixel object with appropriate configuration.strip = PixelStrip(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL)# Intialize the library (must be called once before other functions).strip.begin()print('Press Ctrl-C to quit.')if not args.clear:print('Use "-c" argument to clear LEDs on exit')try:while True:print('Color wipe animations.')colorWipe(strip, Color(255, 255, 0)) # Red wipecolorWipe(strip, Color(0, 0, 0), 30)colorWipe(strip, Color(0, 255, 255)) # Blue wipecolorWipe(strip, Color(0, 0, 0), 30)colorWipe(strip, Color(255, 0, 255)) # Green wipecolorWipe(strip, Color(0, 0, 0), 30)print('Theater chase animations.')print('Rainbow animations.')rainbow(strip)colorWipe(strip, Color(0, 0, 0), 50)rainbowCycle(strip)colorWipe(strip, Color(0, 0, 0), 40)breakwhile True:rainbowCycle(strip)#print('***********************')colorWipe(strip, Color(0, 0, 0), 100)except:colorWipe(strip, Color(0, 0, 0), 100)
之后要注意
这个库非常奇怪,直接在ide中运行会报错,需要在终端中运行python文件
直接ide中运行报错结果:(可能不完全相同)
RuntimeError: ws2811_init failed with code -5 (mmap() failed)
先用cd 路径找到所在文件位置
然后用sudo python 文件名 运行
如果出现
ImportError: No module named _rpi_ws281x
说明安装rpi_ws281x库可能有问题
先用pip uninstall rpi_ws281x库 将其删掉
然后再用sudo pip3 install rpi_ws281x 下载
如果运行成功,应该就能点亮这个花里胡哨的灯了
并且在终端中会有 Color wipe animations等等提示
tips: 接线是否正确是不影响程序运行的 如果确实出现了提示但是灯没有亮,有可能是线没有接正确 要注意 灯带上红 绿 白 经过杜邦线连接后对应接树莓派上针脚显示为 5V #18 GND
亲测 无论哪个5V、哪个GND都可以正确点亮
想关闭灯光就在终端中按两次ctrl+c 想彻底关闭直接拔掉接线即可
这里灯光效果是由代码实现的,故你也可以通过自己的代码实现自己想要的效果
欣赏一下光污染~
【全网最详细】 树莓派控制ws2812b灯带 点亮教程相关推荐
- STM32F427库函数PWM+DMA控制ws2812b灯带
STM32F427IIHx库函数PWM+DMA控制ws2812b灯带 一.参考资料 查看ws2812b用户手册可知: 二.代码部分 添加文件ws2812b.c,ws2812b.h 配置的F427IIH ...
- Arduino控制WS2812灯带(灯环)
设计者:STCode(公众号同名) Arduino控制WS2812灯带(灯环) 1) WS2812灯 WS2812灯带 WS2812灯环 WS2812是一个集控制电路与发光电路于一体的智能外空LED光 ...
- 三极管实现单片机PWM控制12VRGB灯带
通过电路分析我们发现荣事达的这款暖风机是通过PWM控制三极管快速通断实现的,相比于用驱动芯片用三极管驱动功率比较大的12V RGB灯带成本会低很多,电路设计也比较简单. 这是我们拆机的电路图: 这 ...
- 使用树莓派控制led灯板 ws2812
使用树莓派控制led灯板ws2812 推荐一个库 Adafruit_NeoPixel 这里是地址:https://github.com/adafruit/Adafruit_NeoPixel 这个原本是 ...
- WS2812B灯带驱动实验
实验环境: KEIL5.正点原子阿波罗STM32F767开发板 一.灯带介绍 过多介绍我这里不赘述了,想了解详情的可以看看手册,直接开干. 1.1.灯带连接方式 我们只要控制DIN端就好了. 1.2. ...
- 三、使用Arduino控制WS2812B灯
1.硬件 该硬件是基于ESP32设计的板子.如下图所示. 2.原理图 2.1.WS2812B原理图 2.2.ESP32部分原理图 综上:只需要控制IO17便可控制RGB灯. 3.软件编程 3.1.添加 ...
- esp32 控制ws2812灯带
采用的arduino控制,利用别人写好的模块进行控制 vs code搜索Adafruit_NeoPixel导入项目中 代码实现 #include <Adafruit_NeoPixel.h> ...
- ws2812b灯带容易坏_吊灯吸顶灯筒灯壁灯射灯灯带LED线条灯……都是个啥?
装修时,灯具作为照明工具,自然是必不可少的装修建材.然而灯具的种类非常多,吊灯.吸顶灯.筒灯.射灯.壁灯.线灯等等,各种灯具琳琅满目,作用也各有不同.不过提醒业主们在选购时,一定要关注灯具的质量.外观 ...
- ws2812b灯带容易坏_WS2812灯带问题
大神,能帮忙看一下吗?非常感谢! [mw_shl_code=arduino,true]#include #include //strip #define PIN 2 #define MAX_LED ...
- 在ESP8266上控制WS2812灯带及热释电传感器原码
请在ARDUINO IDE中自行添加Adafruit_NeoPixel库即可.测试正常. #include <Adafruit_NeoPixel.h> #ifdef __AVR__ #i ...
最新文章
- bit,Byte、KB、MB、GB、TB、PB、EB之间的关系
- mysql如何插入新的字段_Mysql 如何 得到新插入的字段ID
- 关于业务架构的一些思考与实践
- ubuntu 命令卡住_如何在Ubuntu系统中重置root密码
- IA-32 Intel手册学习笔记(一)系统架构概述
- 使用SAP WebIDE创建开发Java应用,并且在浏览器里调试
- 墨客原型系统——随笔分享APP
- OpenCR arduino problem list
- 35岁前成功黄金法则
- 转载一篇阅读文章(还算不错吧)
- MYSQL 编码设置
- SAP CRM Transaction处理中的权限控制
- axios post,get,put
- excel辅助列巧妙运用完成工资条的制作
- vue 组件 not defined_Vue、Spring Boot开发小而完整的Web前后端分离项目实战10
- 清华大学android源码下载网站地址
- 国培计算机培训奥鹏,3515011349奥鹏国培培训网络研修总结
- ssim算法计算图片_OpenCV 实现图像结构相似度算法 (SSIM 算法)
- 传智播客黑马程序员Java学习笔记(一)
- 音视频技术开发周刊 | 177
热门文章
- SQL常见的一些面试题
- linux安装字体库(simSun为例)
- 【情商 为什么情商比智商更重要】阅读笔记
- office2013 安装易用宝不成功
- 从“外行”到“里手”,长沙企业“力量矩阵”开始觉醒
- easydarwin 安装_win10安装EasyDarwin
- 机器学习中的数学——激活函数(一):Sigmoid函数
- 出现Please make sure you have the correct access rights and the repository exists.问题解决
- USB协议架构及驱动架构
- lzg_ad: WES7 技术概览