利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈

利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈


有需要的朋友可以直接拷贝代码拿来使用,按钮是自锁按钮控制的,不是点动开关型的。这是经过许多人的经验总结和奉献才调通的程序,感谢无私分享代码的网友。今天特此开源出来,希望能帮到有需要的朋友,少走一些弯路。源程序文件放在最后上链接。
补充也可以通过基于blinker app里面的语音来控制。

#define BLINKER_WIFI
#define BLINKER_PRINT Serial
#include 
 
//****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,让arduino实现多路继电器状态控制和APP端状态反馈_第1张图片
利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈_第2张图片
利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈_第3张图片
blinker语音控制讲解说明:
打开语音指令控制模式,直接说指令。
利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈_第4张图片

指令设置在设备里面进行设置语音指令:

利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈_第5张图片
利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈_第6张图片

百度网盘(有帮助请给个赞,天下免费的资源不常有,开源分享整理资源不容易,谢谢支持!)
链接:https://pan.baidu.com/s/1SkRcH-9Pvy4RR8RB01ZGrw
提取码:mocn

你可能感兴趣的:(arduino,blinker,esp8266,arduino)