利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈
日期: 2020-07-20 分类: 跨站数据测试 282次阅读
利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈
有需要的朋友可以直接拷贝代码拿来使用,按钮是自锁按钮控制的,不是点动开关型的。这是经过许多人的经验总结和奉献才调通的程序,感谢无私分享代码的网友。今天特此开源出来,希望能帮到有需要的朋友,少走一些弯路。源程序文件放在最后上链接。
补充也可以通过基于blinker app里面的语音来控制。
#define BLINKER_WIFI
#define BLINKER_PRINT Serial
#include <Blinker.h>
//****wifi、设备的定义****
char auth[] = "2fa798b48a08"; //设备key号
char ssid[] = "CMCC-DyVv"; //wifi名称
char pswd[] = "pba5ayzk"; //wifi密码
//io口定义
int kg0=D8;
int kg1=D7;
int kg2=D6;
int kg3=D5;
int sj=1000;//延迟时间
//****新建组件对象****
BlinkerButton Button1("btn-kg0"); //设置app按键的键名
BlinkerButton Button2("btn-kg1"); //设置app按键的键名
BlinkerButton Button3("btn-kg2"); //设置app按键的键名
BlinkerButton Button4("btn-kg3"); //设置app按键的键名
// 按下按键即会执行该函数
void button1_callback(const String & state) {
BLINKER_LOG("1#灯,状态: ", state);
if (state=="on") {
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(kg0, HIGH);
Button1.color("#FF0000"); //1#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button1.text("已开灯");
Button1.print("on");
BLINKER_LOG ("1#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(kg0, LOW);
Button1.color("#000000"); 2#按钮没有按下时,app按键颜色状态显示是黑色
// 反馈开关状态
Button1.text("已关灯");
Button1.print("off");
BLINKER_LOG ("1#灯已关灯off");
}
}
void button2_callback(const String & state) {
BLINKER_LOG("2#灯,状态: ", state);
if (state=="on") {
digitalWrite(kg1, HIGH);
Button2.color("#FF0000"); //2#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button2.text("已开灯");
Button2.print("on");
BLINKER_LOG ("2#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg1, LOW);
Button2.color("#000000"); //2#按钮没有按下时,app按键颜色状态显示是黑色
// 反馈开关状态
Button2.text("已关灯");
Button2.print("off");
BLINKER_LOG ("2#灯已关灯off");
}
}
void button3_callback(const String & state) {
BLINKER_LOG("3#灯,状态: ", state);
if (state=="on") {
digitalWrite(kg2, HIGH);
Button3.color("#FF0000"); //3#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button3.text("已开灯");
Button3.print("on");
BLINKER_LOG ("3#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg2, LOW);
Button3.color("#000000"); //3#按钮没有按下时,app按键颜色状态显示是黑色
// 反馈开关状态
Button3.text("已关灯");
Button3.print("off");
BLINKER_LOG ("3#灯已关灯off");
}
}
void button4_callback(const String & state) {
BLINKER_LOG("4#灯,状态: ", state);
if (state=="on") {
digitalWrite(kg3, HIGH);
Button4.color("#FF0000"); //4#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button4.text("已开灯");
Button4.print("on");
BLINKER_LOG ("4#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg3, LOW);
Button4.color("#000000"); //4#按钮没有按下时,app按键颜色状态显示是黑色
// 反馈开关状态
Button4.text("已关灯");
Button4.print("off");
BLINKER_LOG ("4#灯已关灯off");
}
}
void setup() {
// ****初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
//**** 初始化有LED的IO
pinMode(kg0, OUTPUT);
digitalWrite(kg0, LOW); //io口初始化为低电平
pinMode(kg1, OUTPUT);
digitalWrite(kg1, LOW); //io口初始化为低电平
pinMode(kg2, OUTPUT);
digitalWrite(kg2, LOW); //io口初始化为低电平
pinMode(kg3, OUTPUT);
digitalWrite(kg3, LOW); //io口初始化为低电平
// ****初始化blinker
Blinker.begin(auth, ssid, pswd);
//****app关联函数****
//app上操作必须的注册回调函数关联按键名“Button1-Button4”和判断程序“button1_callback"
Button1.attach(button1_callback);
Button2.attach(button2_callback);
Button3.attach(button3_callback);
Button4.attach(button4_callback);
}
void loop() {
Blinker.run();
}
手机点灯app里面按钮相关设置,以及显示效果如下:
blinker语音控制讲解说明:
打开语音指令控制模式,直接说指令。
指令设置在设备里面进行设置语音指令:
百度网盘(有帮助请给个赞,天下免费的资源不常有,开源分享整理资源不容易,谢谢支持!)
链接:https://pan.baidu.com/s/1SkRcH-9Pvy4RR8RB01ZGrw
提取码:mocn
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
上一篇: Vue简单介绍
下一篇: mysql 优化-总结
精华推荐