又双叒更新同步开关状态 ,小爱同学+app+本地按键控制状.....-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: z01228

[分享] 又双叒更新同步开关状态 ,小爱同学+app+本地按键控制状.....

[复制链接]
发表于 2020-3-15 15:29 | 显示全部楼层
z01228 发表于 2020-3-9 15:19
电源是对的 本地的开关接在i02上

我不知道你这个触摸板的输出的正的 还是负的 ,我的程序里写的是负才触 ...

可不可以把轻触改成一直触就高电平,松开手就低电平
 楼主| 发表于 2020-3-17 21:48 来自手机 | 显示全部楼层
weiding 发表于 2020-3-15 15:29
可不可以把轻触改成一直触就高电平,松开手就低电平


你说的是可行的。但io口要配下拉电阻 vcc经轻触再连到io口  这个时候按下时io.口就收到高电平 松开io口就是底电平。
 楼主| 发表于 2020-3-17 21:53 来自手机 | 显示全部楼层
Gnd接轻触开关再到io2
发表于 2020-3-18 23:14 | 显示全部楼层
z01228 发表于 2020-3-17 21:48
你说的是可行的。但io口要配下拉电阻 vcc经轻触再连到io口  这个时候按下时io.口就收到高电平 松开io口 ...

我加了下拉电阻还是不得,代码要改吗?
发表于 2020-3-19 08:13 | 显示全部楼层
这个程序可以用一个人体检测器点亮吗
 楼主| 发表于 2020-3-19 18:33 | 显示全部楼层
weiding 发表于 2020-3-18 23:14
我加了下拉电阻还是不得,代码要改吗?

我把你弄糊涂了 你是需要修改触摸板的输出  还是单片机io0的判断模式
 楼主| 发表于 2020-3-19 18:34 | 显示全部楼层
icanglk 发表于 2020-3-19 08:13
这个程序可以用一个人体检测器点亮吗

可以是可以  但是要修改一些地方
发表于 2020-3-19 20:32 | 显示全部楼层
本帖最后由 YLGZS 于 2020-3-19 20:36 编辑

这是我根据楼主的代码稍加更改的。加了自动配网


[mw_shl_code=arduino,true]/************官方按键示例程序详细注释,方便第一次看程序的。如果有错误的及时通知下修改***************
     十六进制颜色码
     (#FF0000 红色)(#FFFF00 黄色)(#FFFFFF 白色)(#0000FF 蓝色)(#00FFFF 浅蓝色)(#FFFFFF白色)
     程序特色1.app控制2.小爱控制3.状态同步4.添加本地按键
     使用的单片机是esp8266-01s,io0接继电器,开机默认(low)动作,io2接本地轻触按键(与GND接触就动作(按下轻开才动作))
     
*/
     

#define BLINKER_WIFI                    //官方wifi协议库
#define BLINKER_ESP_SMARTCONFIG         // 进行配网
#define BLINKER_MIOT_LIGHT              //小爱灯类库
#define BLINKER_PRINT Serial            //串口协议库
#include <Blinker.h>                    //官方库

char auth[] = "**************";           //设备key号
//char ssid[] = "mi";                     //wifi名称
//char pswd[] = "123**780";              //wifi密码

int kg=0;//继电器输出
int kg2=2;//本地轻触开关,io2与gnd接时动作
//*******新建组件对象
BlinkerButton Button1("btn-abc");              //设置app按键的键名

//*******app上按下按键即会执行该函数app里按键有2种模式3钟不同样式,下面写出所有的开关状态。
void button1_callback(const String & state)              //用state来存储组键的值按键 : "tap"(点按); "pre"(长按); "pup"(释放)开关 : "on"(打开); "off"(关闭)
{
  BLINKER_LOG("app操作了!: ", state);                //串口打印

  if (digitalRead(kg)==HIGH) {              //如果state是on状态
    BLINKER_LOG("灭灯!");                           //串口打印
    digitalWrite(kg, LOW);
    Button1.color("#00FFFF");                     //设置app按键是深蓝色
    Button1.text("灭");
    Button1.print("off");                         //反馈回按键状态是开
  }
  else if (digitalRead(kg)==LOW) {       //如果state是off状态
    BLINKER_LOG("亮灯!");                         //串口打印
     digitalWrite(kg,HIGH);
    Button1.color("#0000FF");                  //设置app按键是浅蓝色
    Button1.text("亮");
    Button1.print("on");                      //反馈回按键状态是关
  }
}
//*******如果小爱有对设备进行操作就执行下面
void miotPowerState(const String & state)
{
    BLINKER_LOG("小爱语音操作!");              //串口打印

    if (state == BLINKER_CMD_ON){
        digitalWrite(kg,HIGH);
        BlinkerMIOT.powerState("on");
        BLINKER_LOG("亮灯!");
        BlinkerMIOT.print();
    }
    else if (state == BLINKER_CMD_OFF){
        digitalWrite(kg,LOW);
        BlinkerMIOT.powerState("off");
        BLINKER_LOG("灭灯!");
        BlinkerMIOT.print();
    }
}
  //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
void heartbeat()
{
  BLINKER_LOG("状态同步!");
   if (digitalRead(kg)==HIGH)
    {
      Button1.print("on");
      Button1.color("#0000FF");              //设置app按键是浅蓝色
      Button1.text("亮");
    }
    else
    {
    Button1.print("off");
    Button1.color("#00FFFF");              //设置app按键是深蓝色
    Button1.text("灭");
    }
}
///如果本地开关有动作执行下面手动模式
void sdms(){
if (digitalRead(kg)==LOW&&digitalRead(kg2)==LOW) { //
    Blinker.delay(150);  //延时150ms不能太少标准按键成功率
    if (digitalRead(kg2)==HIGH){               
        BLINKER_LOG("本地开关动作!");      
        BLINKER_LOG("亮灯!");                         //串口打印
        digitalWrite(kg,HIGH);
        Button1.color("#0000FF");                  //设置app按键是浅蓝色
        Button1.text("亮");
        Button1.print("on");
        }
}
if (digitalRead(kg)==HIGH&&digitalRead(kg2)==LOW) {              
    Blinker.delay(150);
    if (digitalRead(kg2)==HIGH){
        BLINKER_LOG("本地开关动作!");
        BLINKER_LOG("灭灯!");                           //串口打印
        digitalWrite(kg, LOW);
        Button1.color("#00FFFF");                     //设置app按键是深蓝色
        Button1.text("灭");
        Button1.print("off");
        }
}
}
void setup()
{
  // 初始化串口
  Serial.begin(115200);
  BLINKER_DEBUG.stream(Serial);

  // 初始化有LED的IO
  pinMode(kg, OUTPUT);
  digitalWrite(kg, LOW);              //默认上电是关 LOW 时的是断开继电器。
  pinMode(kg2,INPUT_PULLUP);         //输入上拉
  
  // 初始化blinker
  Blinker.begin(auth);//, ssid, pswd
  Button1.attach(button1_callback);              //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback"
  BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
  Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
}

void loop() {
  sdms();//本地开关手动模式函数
  Blinker.run();
}[/mw_shl_code]



界面配置代码

{¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨light¨¨background¨{¨img¨¨assets/img/headerbg.jpg¨¨isFull¨«}}¨dashboard¨|{¨type¨¨btn¨¨ico¨¨fal fa-power-off¨¨mode¨É¨t0¨¨文本1¨¨t1¨¨文本2¨¨bg¨É¨cols¨Ë¨rows¨Ë¨key¨¨btn-abc¨´x´Ì´y´Ñ¨speech¨|÷¨lstyle¨Ê}{ßA¨deb¨ßEÉßJÉßKÑßLÌßM¨debug¨´x´É´y´Í}÷¨actions¨|÷¨triggers¨|÷}
发表于 2020-3-20 19:40 | 显示全部楼层
z01228 发表于 2020-3-19 18:33
我把你弄糊涂了 你是需要修改触摸板的输出  还是单片机io0的判断模式

我是想修改io2口本地开关,手放在触摸板上就是高电平,手放开就是低电平
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 01:33 , Processed in 0.142463 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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