ESP8266 接入blinker 物联网

518 阅读1分钟

设置执行时间,点击启动,开始倒计时,倒计时结束,自动终止运行(通电),关闭设备(断电)。

#define BLINKER_PRINT Serial
#define BLINKER_WIFI


#include <Blinker.h>

char auth[] = "*******";
char ssid[] = "*******";
char pswd[] = "*******";

// 新建组件对象
BlinkerButton Button1("btn1");
BlinkerButton Button2("btn2");
BlinkerNumber Number1("num1");
BlinkerText Text1("tex1");
BlinkerText Text2("tex2");
BlinkerText Text3("tex3");
BlinkerText Text4("tex4");
BlinkerText Text5("tex5");
BlinkerSlider Slider1("ran1");
BlinkerNumber Number_1("num1");
int counter = 0;
int ran=20;
int start_time=0;
int end_time=0;
int countDown=0;

bool run_state =false;
bool btn_state =true;
bool btn_end =false;
bool ran_state =true;
// 按下按键即会执行该函数
void button1_callback(const String & state) {

  if(btn_state){
    BLINKER_LOG("get button state: ", state);
    Button1.color("#6a5ae2");
    Button1.text("运行中");
    Button1.print();
    
    Button2.color("#eee");
    Button2.text("终止");
    Button2.print();
    
    Blinker.vibrate(255);  
    run_state=true;
    btn_state=false;
    btn_end=true;
    ran_state=false;
    start_time=millis();
    
    Text1.print(start_time);
    digitalWrite(0,LOW);
    BLINKER_LOG("get button state:on", state);
    Blinker.vibrate(255);  
  }
    
}


void onTimer()
{
  end_time=(ran+3) *1000 + start_time;
  
//  Text1.print( ceil((millis()-start_time)/1000));
  if(run_state){

    if(ceil((millis()-start_time)/1000)<=ran){
      countDown=ceil(ran- ceil((millis()-start_time)/1000));
      Text2.print(countDown);
      Number1.print(countDown-1);
    }else{
      Text2.print(0);
      Number1.print(0);
  }

    
  }


  if( end_time < millis() && run_state){
      counter++;
      Button1.color("#eee");
      Button1.text("运行");
      Button1.print();
  
      Button2.color("#6a5ae2");
      Button2.text("终止");
      Button2.print();
      
      run_state=false;
      btn_state=true;
      btn_end=false;
      ran_state=true;

  
      digitalWrite(0,HIGH);
      Blinker.vibrate(255);  
    }


  
  
  Text3.print(run_state);
  Blinker.print("counter", start_time);
  Text4.print(btn_end);
  Text5.print(btn_state);
  Blinker.print("counter", end_time);
  
  
}


void button2_callback(const String & state) {

  if(btn_end){
    BLINKER_LOG("get button state: ", state);
    Button2.color("#6a5ae2");
    Button2.text("终止");
    Button2.print();

    Button1.color("#eee");
    Button1.text("运行");
    Button1.print();

    run_state=false;
    btn_state=true;
    btn_end=false;
    ran_state=true;
    digitalWrite(0,HIGH);
    Text2.print(0);
    Number1.print(0);
    BLINKER_LOG("get button state:off", state);
    Blinker.vibrate(255);  
  }
   
//    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}


void slider1_callback(int32_t value)
{
    if(ran_state){
      BLINKER_LOG("get slider value: ", value);
      ran = value;
      Blinker.vibrate(255);  
      Slider1.print(value);
    
    }else{
       Slider1.print(ran);
       
    }
    
}

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

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

    #if defined(BLINKER_PRINT)
        BLINKER_DEBUG.stream(BLINKER_PRINT);
    #endif
    
    // 初始化有LED的IO
    pinMode(0, OUTPUT);              //定义io口为输出
    digitalWrite(0, HIGH);           //定义io默认为高电平
//    pinMode(LED_BUILTIN, OUTPUT);
//    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Slider1.attach(slider1_callback);

}

void loop() {
    Blinker.run();
    onTimer();
}

唉没有引用定时器的库,MsTimer2 不知道为啥有问题,只能在loop里简易实现倒计时功能了

Arduino 在这里下载 www.arduino.cn/thread-5838… 不要用2.0版本

文件》首选项》附加开发板管理器网址 填这个arduino.esp8266.com/stable/pack…

安装blinker Arduino库 diandeng.tech/sdk/blinker… Windows:将下载好的blinker库解压到 我的电脑>文档>Arduino>libraries 文件夹中

文档diandeng.tech/doc/getting…

开发板里安装esp8266

数据那个组件还与延迟。。。。

4A16189FF0E71A5FFDB706D05AE9A03E.gif

我浅薄的c的基础啊,实现功能就好,管它代码优雅不优雅。