Blinker小爱同学控制,增加按键开关,一直闪灯!-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4393|回复: 6

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

[复制链接]
发表于 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));
  }
   
  }


发表于 2020-1-1 09:58 | 显示全部楼层
感觉并不是一个blinker问题,输入上下拉了吗
 楼主| 发表于 2020-1-1 12:45 | 显示全部楼层
谢谢,好了!
一定要10K(棕黑红),随便找个电阻是不行的,一直以为是程序问题!
另外问一下,修改哪个可以上电LED是熄灭状态?
发表于 2020-1-1 17:18 | 显示全部楼层
本帖最后由 lwq1947 于 2020-1-1 17:39 编辑

棕黑红应该是1K吧.把void setup() 中的 digitalWrite(LED_BUILTIN, HIGH);改成digitalWrite(LED_BUILTIN, LOW);试试.
发表于 2020-1-1 17:32 | 显示全部楼层
本帖最后由 lwq1947 于 2020-1-1 17:36 编辑
奈何col 发表于 2020-1-1 09:58
感觉并不是一个blinker问题,输入上下拉了吗

奈何老师新年好!请您帮我看看我的"函数调用"能否解答我的求助.谢谢.
 楼主| 发表于 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)这个我试试看!
发表于 2020-1-3 10:32 | 显示全部楼层
lex561 发表于 2020-1-1 12:45
谢谢,好了!
一定要10K(棕黑红),随便找个电阻是不行的,一直以为是程序问题!
另外问一下,修改哪个 ...

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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 06:34 , Processed in 0.132530 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表