查看: 310|回复: 6

[已解答] Blinker小爱同学控制,增加按键开关,一直闪灯!

[复制链接]
  • TA的每日心情
    开心
    2020-1-24 23:01
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2019-12-31 21:19 | 显示全部楼层 |阅读模式
    已经可以用小爱同学(和blinker)控制LED,但是断网或者重启后,默认是亮灯。
    所以想增加一个按键控制LED ,测试了好几次,按键可以控制的时候,blinker不能控制。
    现在的情况是:上电LED一直在闪!

    仅个人爱好,都是抄袭(奈何col),不懂,所以求助!

    #define BLINKER_WIFI
    #define BLINKER_MIOT_LIGHT  //小爱设备配置:灯
    #include <Blinker.h>

    char auth[] = "xxxxxxxx";
    char ssid[] = "xxxxxx";
    char pswd[] = "xxxxxxx";

    int buttonPin = 2;   //定义按钮开关引脚为2-增加

    // blinker新建组件对象
      
    BlinkerButton Button1("btn-abc");
      
    // blinker按下按键即会执行该函数
      
    void button1_callback(const String & state) {
      
        BLINKER_LOG("get button state: ", state);
      
        digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
      
        Blinker.vibrate();
      
    }

    //小爱电源类操作的回调函数:
    //当小爱同学向设备发起控制, 设备端需要有对应控制处理函数
    void miotPowerState(const String & state)
    {
    BLINKER_LOG("need set power state: ", state);
    if (state == BLINKER_CMD_ON) {
    digitalWrite(LED_BUILTIN, HIGH);
    BlinkerMIOT.powerState("on");
    BlinkerMIOT.print();
    }
    else if (state == BLINKER_CMD_OFF) {
    digitalWrite(LED_BUILTIN, LOW);
    BlinkerMIOT.powerState("off");
    BlinkerMIOT.print();
    }
    }


      
    void setup() {
      
      
      pinMode (buttonPin,INPUT);   //设定按钮引脚为输入状态-增加
      digitalWrite(buttonPin, HIGH);  //增加

      
        // 初始化串口,并开启调试信息
      
        Serial.begin(115200);   
      
        BLINKER_DEBUG.stream(Serial);
      
        // 初始化有LED的IO
      
        pinMode(LED_BUILTIN, OUTPUT);
      
        digitalWrite(LED_BUILTIN, HIGH);
      
        // 初始化blinker
      
        Blinker.begin(auth, ssid, pswd);
      
        Button1.attach(button1_callback);
    //小爱同学务必在回调函数中反馈该控制状态
    BlinkerMIOT.attachPowerState(miotPowerState);//注册回调函数
    }
      

      
    void loop() {
      
        Blinker.run();

       
       //下面增加内容
        if (digitalRead(buttonPin) == LOW){
        delay(40);              //延时简单抗抖动
        digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
      }
       
      }


  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2020-1-1 09:58 | 显示全部楼层
    感觉并不是一个blinker问题,输入上下拉了吗
  • TA的每日心情
    开心
    2020-1-24 23:01
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2020-1-1 12:45 | 显示全部楼层
    谢谢,好了!
    一定要10K(棕黑红),随便找个电阻是不行的,一直以为是程序问题!
    另外问一下,修改哪个可以上电LED是熄灭状态?
  • TA的每日心情
    奋斗
    2020-1-25 07:16
  • 签到天数: 449 天

    [LV.9]以坛为家II

    发表于 2020-1-1 17:18 | 显示全部楼层
    本帖最后由 lwq1947 于 2020-1-1 17:39 编辑

    棕黑红应该是1K吧.把void setup() 中的 digitalWrite(LED_BUILTIN, HIGH);改成digitalWrite(LED_BUILTIN, LOW);试试.
  • TA的每日心情
    奋斗
    2020-1-25 07:16
  • 签到天数: 449 天

    [LV.9]以坛为家II

    发表于 2020-1-1 17:32 | 显示全部楼层
    本帖最后由 lwq1947 于 2020-1-1 17:36 编辑
    奈何col 发表于 2020-1-1 09:58
    感觉并不是一个blinker问题,输入上下拉了吗

    奈何老师新年好!请您帮我看看我的"函数调用"能否解答我的求助.谢谢.
  • TA的每日心情
    开心
    2020-1-24 23:01
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2020-1-3 09:54 | 显示全部楼层
    lwq1947 发表于 2020-1-1 17:18
    棕黑红应该是1K吧.把void setup() 中的 digitalWrite(LED_BUILTIN, HIGH);改成digitalWrite(LED_BUILTIN, L ...

    谢谢,应该是棕黑橙!
    digitalWrite(LED_BUILTIN, LOW)这个我试试看!
  • TA的每日心情
    无聊
    2019-12-6 10:02
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    发表于 2020-1-3 10:32 | 显示全部楼层
    lex561 发表于 2020-1-1 12:45
    谢谢,好了!
    一定要10K(棕黑红),随便找个电阻是不行的,一直以为是程序问题!
    另外问一下,修改哪个 ...

    初始化时把high改成LOW就可以了
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    小爱同学+Blinker控制灯
    小爱同学+Blinker控制灯
    来这个社区已经很久了,有很多问题都是在这里解决的。在此谢谢他们!这里我也分享一个
    使用74hc595驱动一位数码管
    使用74hc595驱动一位数码
    74hc595是一种常用的I/O拓展芯片,今天我尝试用一个74hc595来驱动一个一位七段数码管
    74HC595的疑惑终于解开
    74HC595的疑惑终于解开
    对于74HC595的教程中和网上的资料看完还是模糊,于是一边接线测试,一边反复看图研究
    数据转换求助!!!
    数据转换求助!!!
    如何将 String str =“123,2132,1321,11”; 转换成 uint16_t A[4]= str
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表