08.ESP8266驱动WS2812彩灯

本篇介绍ESP8266使用NeoPixel库来驱动IOT Kit板载WS2812彩灯。

1. WS2812彩灯介绍

WS2812是一个集控制电路与发光电路于一体的智能外控LED光源,外型与5050LED灯珠相同,每个灯珠都是一个像素点。像素点内包含数字接口、数据锁存、信号整形放大驱动电路,还包含高精度的内部振荡器和12V高压可编程定电流控制部分。

WS2812灯带

数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度要求。

时序波形

按照数据传输协议即可对WS2812进行驱动,当然对于WS2812有许多开源的驱动库,下面进行Adafruit_NeoPixel驱动库的安装。

2. 安装驱动库

在Arduino IDE中点击「项目」—「加载库」—「管理库」,查找Adafruit_NeoPixel库,选择最新版本,点击安装。

查找库

在弹出的对话框中选择Install all,安装全部的关联库。

安装关联库

3. 硬件连接及程序下载

在IOT Kit上,WS2812通过跳线帽连接到ESP8266的GPIO0。

硬件连接

在Arduino IDE中新建sketch,拷贝如下代码保存并下载到开发板。

/*
 * ws2812b
 * ESP8266驱动WS2812彩灯
 * 板载接口GPIO0
 */

#include <Adafruit_NeoPixel.h>

#define PIN        0  //GPIO0接口
#define NUMPIXELS  1  //彩灯个数

Adafruit_NeoPixel led(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {

  led.begin();
  led.setBrightness(10); //设置亮度 (0~255)
}

void loop() {
  
  led.setPixelColor(0,led.Color(255, 0, 0)); //红色
  led.show(); //刷新显示
  delay(1000);

  led.setPixelColor(0,led.Color(0, 255, 0)); //绿色
  led.show(); //刷新显示
  delay(1000);

  led.setPixelColor(0,led.Color(0, 0, 2550)); //蓝色
  led.show(); //刷新显示
  delay(1000);
  
  led.clear();//清空显示
  led.show(); //刷新显示
  delay(1000);

}

上传成功后,板载WS2812彩灯将红绿蓝交替显示。

实验现象

4.常用库函数介绍

下面对Adafruit_NeoPixel库常用函数进行介绍:

  • Adafruit_NeoPixel led(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800):创建对象,包括信号引脚以及像素点数量,最后一个参数是像素类型标志,一般默认即可。
  • led.begin():对象初始化。
  • led.show():显示刷新,每次设置完毕必须调用此函数。
  • led.clean():将颜色值清除到0。
  • led.setBrightness():设置亮度。范围0~255。
  • led.setPixelColor():设置颜色值,第一个参数为像素点序号。
  • led.Color():将RGB单独颜色值打包成32位颜色值。

关于Adafruit_NeoPixel库详细介绍,请参考GitHub


关注公众号「TonyCode」,获取完整代码。

个人博客1
个人博客2
回复「1024」获取1000G学习资料

  • 8
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值