使用ESP8266驱动WS2812彩灯

描述

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

1. WS2812彩灯介绍

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

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

led

时序波形

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

2. 安装驱动库

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

led

查找库

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

led

安装关联库

3. 硬件连接及程序下载

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

led

硬件连接

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

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

#include

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

led

实验现象

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位颜色值。
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分