查看: 537|回复: 2

[已解答] 这个怎么总是执行第一个Button1

[复制链接]
  • TA的每日心情
    擦汗
    2019-5-28 15:56
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2019-4-26 15:50 | 显示全部楼层 |阅读模式
    #define BLINKER_WIFI

    #include <Blinker.h>
    int motorPin1 = D3;//电机正转开窗
    int motorPin2 = D4;//电机反转关窗
    int switchPin1 = D5;//开窗到位的限位
    int switchPin2 = D6;//关窗到位的限位
    int val1 = 0;
    int val2 = 0;
    BlinkerText text1("text1");//文本提示1
    BlinkerText text2("text2");//文本提示2
    BlinkerText text3("text3");
    BlinkerText text4("text4");

    char auth[] = "xxxxxxxxx";
    char ssid[] = "123";
    char pswd[] = "00000000";

    // 新建组件对象
    BlinkerButton Button1("btn-n3f");//电机正转开窗
    BlinkerButton Button2("btn-31j");//电机反转关窗
    BlinkerButton Button3("btn-6lo");//电机停止

    // 按下按键即会执行该函数
    void button1_callback(const String & state)
    {
        BLINKER_LOG("get button state: ", state);
        digitalWrite(val1,!digitalRead(switchPin1));
        digitalWrite(val2,!digitalRead(switchPin2));
        if(state == "on"){
          digitalWrite(motorPin2,LOW);
          do{
            if(val1 == 0&&val2 == 0){
              digitalWrite(motorPin1,HIGH);
              text1.print("窗户正在打开!");
              Serial.println("val1,val2");
              }
             else if(val1 == 0&&val2 == 1){
              digitalWrite(motorPin1,HIGH);
              text1.print("窗户正在打开!!");
              Serial.println("val1,val2");
              }
             else if(val1 == 1&&val2 == 0){
              digitalWrite(motorPin1,LOW);
              text1.print("窗户已经完全打开");
              Serial.println("val1,val2");
              }
             else{
              digitalWrite(motorPin1,LOW);
              text1.print("微动开关出现故障");
              Serial.println("val1,val2");
              }
              Blinker.delay(500);
            }
          while(val1 == 0&&val2 == 0);
          Serial.println("val1,val2");
          }   
    }
    void button2_callback(const String & state)
    {
        BLINKER_LOG("get button state: ", state);
        digitalWrite(val1,!digitalRead(switchPin1));
        digitalWrite(val2,!digitalRead(switchPin2));
        if(state == "on"){
          digitalWrite(motorPin1,LOW);
          do{
            if(val1 == 0&&val2 == 0){
              digitalWrite(motorPin2,HIGH);
              text2.print("窗户正在关闭!");
              Serial.println("val1,val2");
              }
             else if(val1 == 0&&val2 == 1){
              digitalWrite(motorPin2,LOW);
              text2.print("窗户已完全关闭");
              Serial.println("val1,val2");
              }
             else if(val1 == 1&&val2 == 0){
              digitalWrite(motorPin1,HIGH);
              text2.print("窗户正在关闭!!");
              Serial.println("val1,val2");
              }
             else{
              digitalWrite(motorPin2,LOW);
              text2.print("微动开关出现故障");
              Serial.println("val1,val2");
              }
              Blinker.delay(500);
            }
          while(val1 == 0&&val2 == 0);
          Serial.println("val1,val2");
          }
    }
    void button3_callback(const String & state)
    {
        BLINKER_LOG("get button state: ", state);
       if(state == "on"){
       digitalWrite(motorPin1,LOW);
       digitalWrite(motorPin2,LOW);
    }else{
      }
    }

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

    void setup()
    {
        // 初始化串口
        Serial.begin(115200);
        BLINKER_DEBUG.stream(Serial);

        // 初始化有LED的IO
        pinMode(motorPin1, OUTPUT);
        pinMode(motorPin2, OUTPUT);
        pinMode(switchPin1, INPUT_PULLUP);
        pinMode(switchPin2, INPUT_PULLUP);

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

        Button1.attach(button1_callback);
    }

    void loop() {
        Blinker.run();

    }

  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2019-4-26 17:08 | 显示全部楼层
    你就只写了个 Button1.attach(button1_callback);,当然只会执行button1
  • TA的每日心情
    擦汗
    2019-5-28 15:56
  • 签到天数: 8 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-4-28 11:23 | 显示全部楼层
    奈何col 发表于 2019-4-26 17:08
    你就只写了个 Button1.attach(button1_callback);,当然只会执行button1

    谢谢....
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    Blynk与m5stack basic以及uiflow的交互玩法
    Blynk与m5stack basic以及
    Blynk与m5stack basic以及uiflow的交互玩法 [准备工作我们假设玩家已经熟悉下面的准备
    心态崩了,小车超声波模块避障的问题
    心态崩了,小车超声波模块
    如图片所示,我写了一个dis[1] = getDistance();但是串口打印了两个dis[1],第二个dis[
    VSCode写Arduino提示无法打开源文件"avr/pgmspace.h"
    VSCode写Arduino提示无法
    整个程序就这点内容,只是做个测试。 Ctrl+Alt+U的上传是没有问题。但是这里有个错误
    arduino 多级菜单人机交互控制继电器
    arduino 多级菜单人机交互
    #include #include #ifdef U8X8_HAVE_HW_SPI #include #endif #ifdef U8X8_HAVE_HW
    Arduino nano与ov7670摄像头模块、1.8寸TFT屏显示彩色图像
    Arduino nano与ov7670摄像
    ov7670摄像头支持彩色拍摄,带fifo闪存的网上教程很足。对于不带fifo的,本人在网上发
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表