查看: 705|回复: 5

[分享] blinker电源插座

[复制链接]
  • TA的每日心情
    开心
    2020-4-5 05:03
  • 签到天数: 518 天

    [LV.9]以坛为家II

    发表于 2020-1-10 06:41 | 显示全部楼层 |阅读模式
    这台blinker电源插座有blinker控制和手动控制两种工作方式.
    1.blinker控制:滑条用于设定时时间,数据块用于显示定时剩余时间,注意两者最大值应统一.两个开关按键一个用于起停定时控制,一个用于开关电源插座.
    2.手动控制:插座上有三个按纽和一个LED显示器.一个按纽用于定时起停或开关电源(短按起或停长按开或关).另两个按纽为增减定时时间设定(最大值为999分)
      短按为慢调,长按为快调.
    如有需求程序再上传.

    572cc14c4daafe7dcd1c85043bce7658.jpg
    dc4d937026583a7b4c925410fa6d97a9.jpg
  • TA的每日心情
    奋斗
    2020-3-10 23:08
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2020-1-10 16:14 | 显示全部楼层
    发下代码呗, 我想看下你按钮怎么去抖的
  • TA的每日心情
    奋斗
    2020-3-10 23:08
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2020-1-10 16:15 | 显示全部楼层
    另外有没有硬件组装过程图呀?比较好奇你用了什么继电器, 怎么塞进去的,嘿嘿
  • TA的每日心情
    开心
    2020-4-5 05:03
  • 签到天数: 518 天

    [LV.9]以坛为家II

     楼主| 发表于 2020-1-10 18:03 | 显示全部楼层
    本帖最后由 lwq1947 于 2020-1-10 18:05 编辑

    由于空间有限所以电源控制采用了双向可控硅元件.组装过程没拍照.上传一张最终图片.程序如下:
    #define BLINKER_WIFI
    #include <Blinker.h>
    #include <Arduino.h>
    #include <Ticker.h>
    #include <TM1637Display.h>
    #define CLK 3
    #define DIO 1
    TM1637Display display(CLK, DIO);
    Ticker flipper;
    char auth[] = "**********";
    char ssid[] ="**********";
    char pswd[] = "*********";

    #define BUTTON_1 "ButtonKey"
    BlinkerButton Button1(BUTTON_1);
    BlinkerButton Button("star");
    #define Slider_1 "SliderKey"
    BlinkerSlider Slider1(Slider_1);
    BlinkerNumber Tval("tval");
    int t;
    int i=0;
    int j=0;
    int k=0;
    int l=0;
    uint32_t BlinkerTime;
    uint32_t pTime=0;
    uint32_t dTime=0;
    float tval_read=1;

    void flip() {     
      if(digitalRead(2)==LOW) i=0;
      if(digitalRead(2)==HIGH){
      i++;
    if((i>59)&&(t>0)){
    i=0;
    t--;
    Tval.print(tval_read);
    tval_read = t;
      Tval.print(tval_read);
    tval_read = t;
      if(t==0)digitalWrite(2, LOW);
    }
    }
    }
    void button_callback(const String & state)   
    {
      BLINKER_LOG("get button state: ", state);
       if (state == BLINKER_CMD_BUTTON_TAP) {
            BLINKER_LOG("Button tap!");
            digitalWrite(2, !digitalRead(2));
            if(digitalRead(2)==HIGH)
            {Button.icon("fas fa-lightbulb fa-spin");
            Button.color("#FF0000");
            Button.text("启动");   
            i=0;
            j=0;}
           else
           { Button.icon("fal fa-lightbulb ");
            Button.color("#0000FF");
            Button.text("停止");
           }
            Button.print();
        }

      }  
      void button1_callback(const String & state)   
    {
      BLINKER_LOG("get button state: ", state);
      if (state=="on")
       {
         Button1.icon("fas fa-sun fa-spin");//fa-lightbulb
            Button1.color("#FF0000");
            Button1.text("开");
        digitalWrite(15, HIGH);
         Button1.print("on");
        }
        else if(state=="off")
        {
           Button1.icon("fal fa-moon");
            Button1.color("#0000FF");
            Button1.text("关");
          digitalWrite(15, LOW);
          digitalWrite(2, LOW);
          Button1.print("off");
         }
    }

    void slider1_callback(int32_t value)
    {
        BLINKER_LOG("get slider value: ", value);
        t=value;
        Tval.print(tval_read);
         tval_read = t;
        t=value;
         Tval.print(tval_read);
         tval_read = t;
    }
    void dataRead(const String & data)
    {
        BLINKER_LOG("Blinker readString: ", data);

        Blinker.vibrate();
       
        uint32_t BlinkerTime = millis();
      Blinker.print(BlinkerTime);
        Blinker.print("millis", BlinkerTime);
    }
    void heartbeat()
    { Tval.print(tval_read);
    }
    void setup()
    {
        Serial.begin(115200);
        BLINKER_DEBUG.stream(Serial);
        BLINKER_DEBUG.debugAll();
      flipper.attach(1, flip);
      pinMode(0,INPUT);  
    pinMode(12,INPUT);
    pinMode(16,INPUT);
    pinMode(15,OUTPUT);
    pinMode(2,OUTPUT);
    digitalWrite(0,HIGH);
    digitalWrite(12,HIGH);
    digitalWrite(16,HIGH);
    digitalWrite(15,LOW);
    digitalWrite(2, LOW);   
        Blinker.begin(auth, ssid, pswd);
         Blinker.attachHeartbeat(heartbeat);
        Blinker.attachData(dataRead);
        Button1.attach(button1_callback);
         Button.attach(button_callback);
        Slider1.attach(slider1_callback);
    }

    void loop()
    {
        Blinker.run();
       tval_read = t;
        display.setBrightness(0x04);
         display.showNumberDec(t, false);
      delay(10);
      BlinkerTime = millis();
    if ( BlinkerTime - pTime > 50) {
    j++;
    pTime= BlinkerTime;}
    if((k==0)&&((digitalRead(16)==LOW)||(digitalRead(12)==LOW)||(digitalRead(0)==LOW))){
    k=1;
    dTime= BlinkerTime;
    if(digitalRead(0)==LOW)  digitalWrite(2, !digitalRead(2));
    }
    if((digitalRead(16)==HIGH)&&(digitalRead(12)==HIGH)&&(digitalRead(0)==HIGH)){
    k=0;
    l=0;
    }
    if(( BlinkerTime - dTime > 3000)&&(digitalRead(16)==LOW))t++;
    if(( BlinkerTime - dTime > 3000)&&(digitalRead(12)==LOW)&&(t>0))t--;

    if(( BlinkerTime - dTime > 3000)&&(digitalRead(0)==LOW)&&(l==0)){
    digitalWrite(15, !digitalRead(15));
    if(digitalRead(15)==LOW)digitalWrite(2, LOW);  
    l=1;
    }
    if(j>9)
    {
    j=0;
    if(digitalRead(16)==LOW)t++;
    if((digitalRead(12)==LOW)&&(t>0))t--;

    }
    }


    b8a7e3b1eb7b19952b481f75e93e3d6c.jpg
  • TA的每日心情
    开心
    2020-2-11 19:59
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2020-1-14 21:01 | 显示全部楼层
    厉害,膜拜中
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    《Color Unit免费申请试用》
    《Color Unit免费申请试用
    COLOR 是一款颜色识别 Unit,其内部集成TCS3472彩色光数字转换器,能够将其检测到颜色
    (blinker+wifiduino)自制远程遥控“机甲大师”
    (blinker+wifiduino)自
    之前就尝试过其他云平台做远程遥控小车,但是某APP 界面无法自定义设计,操作方式
    自动抛石机的编程,两个舵机一个碰撞传感器。
    自动抛石机的编程,两个舵
    以前从未接触这个,突然老师就要求写这个的编程,非常希望得到帮助。 大意是这样的:
    no matching function for call to 'DS3231::DS3231()'
    no matching function for
    刚学习的小白,有大佬知道这个什么意思吗,怎么解决
    教你让OLED动起来!多重字符串版!
    教你让OLED动起来!多重字
    大家都知道:arduino单片机是单线程的 而上次教程中的多段字符串的运行速度必须一致
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表