求助,用esp-01S做的点动开关怎样做两个按钮?已解决-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: wjh2589

求助,用esp-01S做的点动开关怎样做两个按钮?已解决

[复制链接]
发表于 2020-4-5 12:12 | 显示全部楼层
yondo 发表于 2020-4-4 00:05
您好,我想用esp-01s通过blinker控制arduino uno 上的舵机,想知道烧录的连线及步骤,您方便讲一下吗,总 ...

我用的是nodemcu哦
发表于 2020-4-5 12:14 | 显示全部楼层
yondo 发表于 2020-4-4 00:05
您好,我想用esp-01s通过blinker控制arduino uno 上的舵机,想知道烧录的连线及步骤,您方便讲一下吗,总 ...

用小爱和BLINKER和按键控制

#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT//支持小爱同学

#include <Blinker.h>
#include <Servo.h>//舵机Servo的库文件

Servo myservo;//定义舵机对象,myservo就是这次要用的舵机名称

char auth[] = "****";//根据需要自行修改
char ssid[] = "**";
char pswd[] = "**";

int kg=12;//继电器输出
int kg2=2;//本地轻触开关,io2与gnd接时动作
// 新建组件对象
BlinkerButton Button1("test");//注意:要和APP组件’数据键名’一致


int counter = 0;//变量

void miotPowerState(const String & state)//小爱电源类操作的回调函数,当小爱向设备发起控制, 设备端需要有对应控制处理函数
{
    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_ON) {

        myservo.write(170);//收到“on”的指令后舵机旋转140度
        BlinkerMIOT.powerState("on");
        BlinkerMIOT.print();//反馈状态
        Blinker.delay(2000);//延时两秒
        myservo.write(90);//舵机归零,回到垂直状态


    }
    else if (state == BLINKER_CMD_OFF) {

         myservo.write(60);//收到“off”的指令后舵机旋转 度
         BlinkerMIOT.powerState("off");
         BlinkerMIOT.print();//反馈状态
         Blinker.delay(2000);//延时两秒
         myservo.write(90);//舵机归零,回到垂直状态


    }
}

// 按下BlinkerAPP按键即会执行该函数
void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    if (state=="on")
    {
        myservo.write(170);//收到“on”的指令后舵机旋转140
        Blinker.delay(2000);//延时
        myservo.write(90);//舵机归零垂直


    } else if(state=="press")//长按BlinkerAPP按键
    {
       myservo.write(60);//长按BlinkerAPP按键后舵机旋转60
       Blinker.delay(2000);//延时
       myservo.write(90);//舵机归零垂直
    }

}


// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    counter++;

}

void sdms()
{
if (digitalRead(kg)==HIGH)// (digitalRead(kg)==HIGH&&digitalRead(kg2)==LOW)
  {
    // Blinker.delay(150);  //延时150ms不能太少标准按键成功率
    if (digitalRead(kg2)==LOW)
    {               
        myservo.write(170);//收到“on”的指令后舵机旋转140
        Blinker.delay(2000);//延时
        myservo.write(90);//舵机归零垂直
        }
}
}

void setup()
{
    // 初始化串口,并开启调试信息,调试用可以删除
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();
    // 初始化舵机
    myservo.attach(12);//舵机的IO口,nodemcu的D6口
    myservo.write(90);//上电时舵机归零垂直
  BlinkerMIOT.attachPowerState(miotPowerState);

   // 初始化有LED的IO
  pinMode(kg, OUTPUT);
  digitalWrite(kg, HIGH);              //默认上电是开  LOW 时的是接通继电器。
  pinMode(kg2,INPUT_PULLUP);         //输入上拉

    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);

    //小爱同学务必在回调函数中反馈该控制状态
    Button1.attach(button1_callback);//注册回调函数
}

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


发表于 2020-4-5 13:40 | 显示全部楼层
ebeeb 发表于 2020-4-5 12:14
用小爱和BLINKER和按键控制

#define BLINKER_WIFI

好的谢谢你,很有帮助
发表于 2020-4-6 21:51 | 显示全部楼层
yondo 发表于 2020-4-5 13:40
好的谢谢你,很有帮助

舵机接nodemcu的D6口,电源接VIN或最好单独供电。开关接D2,不要可去掉不接
发表于 2020-4-10 21:35 | 显示全部楼层
ebeeb 发表于 2020-4-6 21:51
舵机接nodemcu的D6口,电源接VIN或最好单独供电。开关接D2,不要可去掉不接

知道了,谢谢你
发表于 2020-6-20 19:00 | 显示全部楼层
谢谢楼主分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-1 05:44 , Processed in 0.109257 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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