使用的是 ws2812数字灯珠 + esp826601s +mqtt 使用arduino IDE开发
能够实现使用mqtt控制多种彩灯模式
效果演示:
链接
ws2812数字灯珠
有信号的输入和输出
有信号的输入和输出
DO是信号输出 DI是信号输入
将多个RGB灯串联,信号进行传输然后实现灯带。
有很多种 我使用是这种来充当led灯
联合esp826601s使用
只需要一个GPIO给ws2812 信号端就可以
因此考虑使用esp8266 -01s的GPIO2
对esp8266 mqtt 使用arduino开发没有基础的同学可以先看这几篇文章
http://niehen.cn/esp8266/esp8266-mqtt-%e4%bd%bf%e7%94%a8arduino%e5%bc%80%e5%8f%91%e6%95%99%e7%a8%8b/
http://niehen.cn/esp8266/mqtt%e5%8d%8f%e8%ae%ae%e4%bb%8b%e7%bb%8d%e4%b8%8e%e5%ba%94%e7%94%a8/
http://niehen.cn/esp8266/esp8266-01s%e4%bb%8b%e7%bb%8d/
前期使用 fast led 库 多次尝试不成功,
查资料发现 由于ws2812 需要连续的扫描 频率很大,而esp01s频率不足所以在前期尝试的时候都没成功,但是使用ws2812只需要一个引脚 使用12f显得浪费
查找了很多资料发现使用Adafruit_NeoPixel.h 可以实现
下面会讲
只需要ws2812 的信号引脚接到 esp01s的GPIO2
5v接到电源5v
GND接地
这里推荐使用 这种模块 方便简单
接线省事很多
Adafruit_NeoPixel库
用于控制基于单线的LED像素和条带
安装
IDE内安装:
- 在arduino IDE中 项目—》加载库----》管理库
- 然后使用搜索栏搜索Neopixel strip。
- 选择版本进行安装
源码安装:
- 找到源码 GitHub链接下载下来
- 下载后,将文件夹重命名为“ Adafruit_NeoPixel”并安装在Arduino Libraries文件夹中
- 重新启动Arduino IDE,打开示例 找到这个库的示例代码
支持的芯片
使用
有两种创建灯带形式
- GRB:绿红蓝三基色 值从0到255
- GRBW:在RGB的基础上加上一种白光,增加亮度的作用。
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800); // 创建 GRB灯带
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800); // 创建 GRBW灯带
在使用时 显示的形式不一样
函数
- begin() 灯带初始化
- setPixelColor() 设置灯带的颜色(第一个参数是灯珠索引,第二个是颜色值(GRB或GRBW))
- setBrightness() 设置灯带的亮度(第一个参数是灯珠索引,第二个是亮度值0-255)
- show() 显示灯带
…
这些函数控制对象 就是前面创建的灯带对象(可以看下面的示例代码)
在使用时可以根据自己需要显示的样子
编写控制灯珠颜色 亮度变化的代码
当然也可以使用这个库提供的一些示例代码 也是很有意思的
彩灯模式
彩虹灯
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
for(i=0; i< pixels.numPixels(); i++) {
pixels.setPixelColor(i, Wheel(((i * 256 / pixels.numPixels()) + j) & 255));
}
pixels.show();
delay(wait);
}
}
另一种彩虹灯
void rainbow(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256; j++) {
for(i=0; i<pixels.numPixels(); i++) {
pixels.setPixelColor(i, Wheel((i+j) & 255));
}
pixels.show();
delay(wait);
}
}
更多彩灯模式 可以到Adafruit_NeoPixel 库的示例中进行查找 使用
代码
通过mqtt发送指令 esp模块收到指令 并控制ws2812显示相应的彩灯模式
项目参考代码链接
更多学习教程
ESP开发学习基础知识
基础知识包括对esp模块的认识与了解 mqtt协议的了解,arduino IDE运用代码编写等等。
- arduino基础学习
- esp系列模块的介绍
- mqtt协议的介绍与使用
- 利用mqtt esp模块 基于arduino IDE开发方法
- esp模块的AT指令 刷固件
- esp模块睡眠模式使用
- esp8266-01s介绍与使用
- esp8266-12f介绍与使用
- NodeMcu介绍与使用
esp开发IOT应用
基于esp8266的模块以及其他模块根据实际的应用场景与需求制作的物联网应用