基于ESP32平台驱动WS2812 RGB灯珠

基于ESP32平台驱动WS2812 RGB灯珠

  • WS2812
    • WS2812简介
    • WS2812驱动说明
    • 驱动
    • 效果展示

原文链接:https://www.yourcee.com/newsinfo/2929327.html

WS2812


在这里插入图片描述

点击图片购买

WS2812简介

本文由WS2812B-5050展开
WS2812B-5050是一个集控制电路与发光电路于一体的智能外控LED光源;其外型采用最新的molding封装工艺,将IC与发光芯片封装在一个5050的封装尺寸中,每个元件即为一个像素点;像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和可编程定电流控制部分,有效保证了像素点光的颜色高度一致。下图为我所采用的25位的WS2812B RGB LED开发板。

WS2812驱动说明

在这里插入图片描述
有手册可知 WS2812B的供电电压在3.7V~5.3V,一般5V供电就可以了。

在这里插入图片描述
时序与实现操作(不同品牌的WS2812B在时序上数据传输时间上会有所区别,但原理都一样,跟着手册走就好)。
WS2812B利用一个组持续时间不同的高低电平形成0码、1码与RES复位码。

  • 0码:高电平持续200ns - 380ns后跳变为低电平,低电平持续580ns - 1us;
  • 1码:高电平持续580 - 1us后跳变为低电平,低电平持续580ns - 1us;
  • Resset码:低电平保持时间大于280us

驱动WS2812B需要纳秒级别的延时,
arduino 的函数delay(xx);或者Microsecond();只能实现毫秒或者微秒级别的延时,
所以我们需要使用NOP空填充来写一个延时函数

void Delay_ns(int a) 
{for(int i;i<a;i++)NOP();}

不准确 但能使用。

在这里插入图片描述
级联与数据结构
驱动级联的WS2812可以通过创建一个二维数组的方式去储存每一个级联级的RGB值,这样就可以实现点亮多个级联的WS2812。
需要注意数据结构,本次用到的WS2812B灯珠的数据结构是GRB,市面上一般还有另外一种为RGB数据结构,具体看手册就好。
区别:
GRB结构的灯珠发送0xFF0000显示的是绿色;
RGB结构的灯珠发送0xFF0000显示的是红色。

驱动

ESP-23WS2812B
5VVCC
GNDGND
D4Din

控制引脚和灯珠数量可直接在.ino文件中更改

#define DataPin 4	//控制引脚
#define Num 8	//灯珠数量

主程序

#include "My-WS2812.h"#define DataPin 4
#define Num 8#define BL_Color 0x000000   //关---清空颜色
#define W_Color  0xFFFFFF    //白光
#define R_Color  0xFF0000   //红色
#define G_Color  0x00FF00   //绿色
#define B_Color  0x0000FF   //蓝色WS2812 ws2812(DataPin);void setup() {// put your setup code here, to run once:Init();
}void loop() {// put your main code here, to run repeatedly:binlk(BL_Color);  //关闭灯光delay(500);binlk(W_Color);   //白光delay(500);binlk(R_Color);   //红光delay(500);binlk(G_Color);   //绿光delay(500);binlk(B_Color);   //蓝光delay(500);runLight (R_Color,G_Color,B_Color);   //跑马灯delay(500);}

效果展示

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部