|
本帖最后由 chen70854022 于 2018-6-24 22:38 编辑
一直想做个物联网的彩灯,之前一直在研究机智云,后来发现了blinker,相比较而言,个人感觉blinker比机智云更简单,可以直接用arduino IDE给8266写程序,而且blinker有很多的库,直接调用即可。简单、明了、易懂。blinker本身自带了很多例程,里面的氛围灯就是RGB灯。不过控制的是ws2812,这种灯自带驱动芯片,只需要一条数据线就可以驱动方便省事,但是比较贵,我手里没有WS2812只有普通的共阴极的RGB灯。所以对例程稍作修改即可。第一次使用需要安装8266库,可以到置顶的帖子里去下载安装,里面说的很清楚了。下面直接看代码吧,例程中的代码没有注释,我会在我的代码中尽力多的加一些注释,可能意思表达不一定准确,不过就是这个意思,
[mw_shl_code=bash,true]#define BLINKER_WIFI //联网模式,分别有蓝牙,WIFI,和MQTT,我的是WIFI,所以我写BLINKER_WIFI
#include <Blinker.h> //blinker库
#define RGB "rgb-4gv" //定义RGB组件,这里的名字必须和手机APP里的RGB组件名一样
#define kaiguan "tog-cac" //定义滑动开关组件,这里的名字必须和手机APP里的滑动开关组件名一样
#define dingshi "ButtonKey" //定义按钮组件,这里的名字必须和手机APP里的按钮组件名一样
#define TAP_EXAMPLE //这个我也不知道
#define r 4 //定义8266的GIPO4为红色灯的输出
#define g 5 //定义8266的GIPO5为绿色灯的输出
#define b 13 //定义8266的GIPO13为蓝色灯的输出
char ssid[] = "Xiaomi_BA3D"; //这里是你的WIFI账号
char pswd[] = "**********"; //这里是你的WIFI密码
void guandeng() { //关灯函数
digitalWrite(r, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
}
uint32_t Time; //这是我用来定时的
uint32_t Time2; //这是我用来定时的
void setup() //这个我就不说了吧
{
Serial.begin(115200); //波特率
pinMode(r, OUTPUT); //设置R为输出;这里的R==上面的GPIO4也就是设置GPIO4为输出模式
pinMode(g, OUTPUT); //同上
pinMode(b, OUTPUT); //同上
Blinker.begin(ssid, pswd); //初始化
Blinker.wInit("RGB", W_RGB); //这里是初始化RGB组件
Blinker.wInit("kaiguan", W_TOGGLE);//初始化滑动开关组件
Blinker.wInit("dingshi", W_BUTTON); //初始化按钮组件
}
void loop()
{
Blinker.run(); //这个比较复杂,我也说不太清楚,反正必须要有,不然各种奇葩问题
if (Blinker.button(dingshi)) { //这是我的定时用的,看看就好
Time = millis() + 5000;
}
Time2 = millis();
if (Time2 == Time) {
Blinker.print(kaiguan, "off");
guandeng();
Blinker.delay(20);
}
if (Blinker.toggle(kaiguan)) { //这里是真正实现RGB灯控制的地方
analogWrite(r, map(Blinker.rgb(RGB, R), 0, 255, 0, 1023)); //因为APP里的RGB滑动条是0-255,但8266控制是0-1023,所以这里用一个map
analogWrite(g, map(Blinker.rgb(RGB, G), 0, 255, 0, 1023));
analogWrite(b, map(Blinker.rgb(RGB, B), 0, 255, 0, 1023));
}
else {
guandeng();
}
}
[/mw_shl_code]
|
评分
-
查看全部评分
|