8266 4路继电器,小爱同学代码应该怎么加,
8266 4路继电器,小爱同学代码应该怎么加,点灯的按钮可以正常使用,小爱同学不能用,继电器为高电平触发,求大神看看#define BLINKER_WIFI
#define BLINKER_MIOT_MULTI_OUTLET //定义小爱同学为4孔插座
#include <Blinker.h>
char auth[] = "0b64e478e6c9"; //上一步中在app中获取到的Secret Key
char ssid[] = "SM"; //您的WiFi热点名称
char pswd[] = "a88888888"; //您的WiFi密码
//定义继电器信号
#define bt1 5 //定义继电器1信号接入GPIO5,D1
#define bt2 4 //定义继电器2信号接入GPIO4,D2
#define bt3 0 //定义继电器3信号接入GPIO0,D3
#define bt4 2 //定义继电器4信号接入GPIO2,D4
// 新建Blinker软件组件对象
BlinkerButton Button1("Switch1"); //组件对象,要和APP组件中的“数据键名”一致,开关1
BlinkerButton Button2("Switch2"); //组件对象,要和APP组件中的“数据键名”一致,开关2
BlinkerButton Button3("Switch3"); //组件对象,要和APP组件中的“数据键名”一致,开关3
BlinkerButton Button4("Switch4"); //组件对象,要和APP组件中的“数据键名”一致,开关4
// 按下按键1即会执行该函数 浇水
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
if (state == "on") {
digitalWrite(bt1, HIGH);
// 反馈开关状态
Button1.print("on");
} else if (state == "off") {
digitalWrite(bt1, LOW);
// 反馈开关状态
Button1.print("off");
}
}
// 按下按键2即会执行该函数 水循环
void button2_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
if (state == "on") {
digitalWrite(bt2, HIGH);
// 反馈开关状态
Button2.print("on");
} else if (state == "off") {
digitalWrite(bt2, LOW);
// 反馈开关状态
Button2.print("off");
}
}
// 按下按键3即会执行该函数 鱼食
void button3_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
if (state == "on") {
digitalWrite(bt3, HIGH);
// 反馈开关状态
Button3.print("on");
Blinker.delay(10000);//打开后延时10S关闭设置为喂鱼时间,预留网络延迟时间1-2S
digitalWrite(bt3, LOW);
// 反馈开关状态
Button3.print("off");
} else if (state == "off") {
digitalWrite(bt3, LOW);
// 反馈开关状态
Button3.print("off");
}
}
// 按下按键4即会执行该函数 水池加水
void button4_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
if (state == "on") {
digitalWrite(bt4, HIGH);
// 反馈开关状态
Button4.print("on");
} else if (state == "off") {
digitalWrite(bt4, LOW);
// 反馈开关状态
Button4.print("off");
}
}
void setup() {
// 初始化串口
Serial.begin(115200);
// 初始化有LED的IO
pinMode(bt1, OUTPUT);
digitalWrite(bt1, LOW);//高电平触发,默认低电平
pinMode(bt2, OUTPUT);
digitalWrite(bt2, LOW);
pinMode(bt3, OUTPUT);
digitalWrite(bt3, LOW);
pinMode(bt4, OUTPUT);
digitalWrite(bt4, LOW);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
Button2.attach(button2_callback);
Button3.attach(button3_callback);
Button4.attach(button4_callback);
}
void loop() {
Blinker.run();
}
需要在初始化中注册 小爱回调void setup()
{
//小爱同学注册回调
BlinkerMIOT.attachPowerState(miotPowerState);//注册小爱电源回调
BlinkerMIOT.attachColor(miotColor);//注册小爱颜色回调
BlinkerMIOT.attachBrightness(miotBright);//注册小爱亮度回调
BlinkerMIOT.attachColorTemperature(miotColoTemp);//注册小爱色温回调
}
控制回调用
//小爱电源类回调,例如:开灯/关灯
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);//低电平打开LED
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);//高电平关闭LED
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
需要在初始化中注册小爱回调
void setup()
{
// 初始化串口
//小爱同学注册回调
BlinkerMIOT.attachPowerState(miotPowerState);//注册小爱电源回调
BlinkerMIOT.attachColor(miotColor);//注册小爱颜色回调
BlinkerMIOT.attachBrightness(miotBright);//注册小爱亮度回调
BlinkerMIOT.attachColorTemperature(miotColoTemp);//注册小爱色温回调
//再用小爱电源类回调,例如:开灯/关灯
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);//低电平打开LED
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);//高电平关闭LED
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
tao555 发表于 2022-2-19 14:03
需要在初始化中注册 小爱回调void setup()
{
我是定义的多孔插座,小爱怎么控制 xiaosa049 发表于 2022-2-19 14:48
我是定义的多孔插座,小爱怎么控制
光定义个类型有什么用,你的程序没有一句接受小爱控制的,当然控制不了。
你试试在初始化中加入
BlinkerMIOT.attachPowerState(miotPowerState);//注册小爱电源回调
在加入函数
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);//低电平打开LED
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);//高电平关闭LED
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
这是一段单路 支持小爱控制的开关代码 请参考
#define BLINKER_MIOT_LIGHT
#define BLINKER_WIFI
#include <Blinker.h>
char auth[] = "ff376716aec4";//电灯科技上的密钥
char ssid[] = "360WiFi-ABDBDF";//你家的WiFi名字
char pswd[] = "@XINYU404";//你家WiFi的密码
int GPIO=0;
#define BUTTON_1 "ButtonKey"
BlinkerButton Button1("anniu");//这个anniu必须要和电灯科技上的按键相同
void button1_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);
digitalWrite(GPIO,!digitalRead(GPIO));
Blinker.vibrate();
}
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ",state);
if (state == BLINKER_CMD_OFF) {
digitalWrite(GPIO, HIGH);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_ON) {
digitalWrite(GPIO, LOW);
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
}
void setup() {
Serial.begin(115200);
pinMode(GPIO,OUTPUT);
digitalWrite(GPIO,HIGH);
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
BlinkerMIOT.attachPowerState(miotPowerState);
}
void loop()
{
Blinker.run();
}
tao555 发表于 2022-2-19 16:01
光定义个类型有什么用,你的程序没有一句接受小爱控制的,当然控制不了。
你试试在初始化中加入
Blinker ...
还是不太懂
//小爱同学
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(bt1, HIGH);
// 反馈开关状态
Button1.print("on");
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(bt1, LOW);
// 反馈开关状态
Button1.print("off");
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
我这样可以开第一路,其余的开不了 xiaosa049 发表于 2022-2-20 10:48
还是不太懂
//小爱同学
void miotPowerState(const String & state)
既然实现了一路操作,其他路也加上相应的控制语句就可以了
我想应该是这样写,我没多路控制,没试过。
//按钮事件1
void 你的按钮X_callback(const String & state) //换成你的按钮定义
{
BLINKER_LOG("get button state: ", state);
digitalWrite(按钮端口X,!digitalRead(按钮端口X));//换成你的按钮端口 Blinker.vibrate(); //震动反馈
}
//按钮事件2
void 你的按钮X_callback(const String & state) //换成你的按钮定义
{
BLINKER_LOG("get button state: ", state);
digitalWrite(按钮端口X,!digitalRead(按钮端口X)); //换成你的按钮端口 Blinker.vibrate(); //震动反馈
}
。。。。。。//有几路写几个
下面是小爱同学控制
//小爱同学1
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(按钮端口X, HIGH);//换成你要控制的端口
// 反馈开关状态
Button1.print("on");
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(按钮端口X, LOW);//与上面端口一致
// 反馈开关状态
Button1.print("off");
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
//小爱同学2
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(按钮端口X, HIGH);//换成你要控制的端口
// 反馈开关状态
Button1.print("on");
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(按钮端口X, LOW);//与上面端口一致
// 反馈开关状态
Button1.print("off");
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
.。。。。。//有几路写几次
页:
[1]