使用Blinker APP+NodeMCU控制多路接口

1、APP的下载地址,以及使用方法可以参考此处,笔者为大家找了一个讲的很详细的网页。
2、关于为什么笔者一直在强调“控制多路接口”,因为官方或者其他网站并未给出此类教程,但这也是一项亟待解决的问题。笔者通过实验,验证了下述算法的可行性,值得大家借鉴。

一、先列出官方提供的例程,便于大家对照比较。

#define BLINKER_WIFI

#include <Blinker.h>
 
char auth[] = "Your Device Secret Key";
char ssid[] = "Your WiFi network SSID or name";
char pswd[] = "Your WiFi network WPA password or WEP key";
 
BlinkerButton Button1("btn-abc");
 
void button1_callback(const String & state) 
{
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    Blinker.vibrate();
}
 
void setup() 
{

    Serial.begin(115200);    
    BLINKER_DEBUG.stream(Serial);

    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);

    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
}
 
void loop() 
{
    Blinker.run();
}

二、提前配置好APP内的开关,以及配套的语音功能。
在这里插入图片描述
改进后的程序如下:

#define BLINKER_PRINT    Serial
#define BLINKER_WIFI

#include <Blinker.h>

char auth[] = "******";
char ssid[] = "******";
char pswd[] = "******";

#define BUTTON_1 "btn-po9"
#define BUTTON_2 "btn-hkc"
#define BUTTON_3 "btn-abc"

BlinkerButton Button1(BUTTON_1);  //定义3个按钮
BlinkerButton Button2(BUTTON_2);
BlinkerButton Button3(BUTTON_3);

void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);

    if (state == BLINKER_CMD_ON) 
    {
        digitalWrite(LED_BUILTIN, LOW);
        Button1.print("on");
    }
    else if (state == BLINKER_CMD_OFF) 
    {
        digitalWrite(LED_BUILTIN, HIGH);
        Button1.print("off");
    }
}

void button2_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);

    if (state == BLINKER_CMD_ON) 
    {
        digitalWrite(LED_BUILTIN, LOW);
        Button2.print("on");
    }
    else if (state == BLINKER_CMD_OFF) 
    {
        digitalWrite(LED_BUILTIN, HIGH);
        Button2.print("off");
    }
}

void button3_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);

    if (state == BLINKER_CMD_BUTTON_TAP) 
    {
        digitalWrite(LED_BUILTIN, LOW);
        delay(500);
        digitalWrite(LED_BUILTIN, HIGH);
        delay(500);
        digitalWrite(LED_BUILTIN, LOW);
        delay(500);
        digitalWrite(LED_BUILTIN, HIGH);
        delay(500);
        Button3.print();
    }
    else
    {
      digitalWrite(LED_BUILTIN, HIGH);
      Button3.print();
    }
}

void setup() 
{
    Serial.begin(115200);

    #if defined(BLINKER_PRINT)
        BLINKER_DEBUG.stream(BLINKER_PRINT);
    #endif

    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);

    Blinker.begin(auth, ssid, pswd);
    
    Button1.attach(button1_callback);   //回调函数 
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
}

void loop()
{
    Blinker.run();
}

以上程序能通过APP控制3路开关接口,理论上能控制无数路开关接口。

由于手头缺乏实验器材,笔者测试的时候都是依靠NodeMCU上自带的LED(位于D2口)。所有例程均能保证运行良好。

详情请关注亿航创客官方抖音账号:EhangGroup

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值