已经可以用小爱同学(和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));
}
}
|