You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.2 KiB
130 lines
3.2 KiB
6 years ago
|
/* *****************************************************************
|
||
|
*
|
||
|
this is the code for the control part of automatic home solar-powered water heated system.
|
||
|
*
|
||
|
* *****************************************************************/
|
||
|
|
||
|
//announce connection moudle
|
||
|
#define BLINKER_PRINT Serial
|
||
|
#define BLINKER_WIFI
|
||
|
|
||
|
//declear the slider on phone
|
||
|
#define Slider_1 "slider"
|
||
|
|
||
|
//include function set
|
||
|
#include <Blinker.h>
|
||
|
|
||
|
//declear overall variable::user, password, identify key
|
||
|
char auth[] = "c625b08a9549";
|
||
|
char ssid[] = "TOTOLINK_3be124";
|
||
|
char pswd[] = "13371035727";
|
||
|
|
||
|
//declear Button with certain keyname
|
||
|
BlinkerButton Button1("btn-abc");
|
||
|
BlinkerButton Button2("btn-on");
|
||
|
BlinkerButton Button3("btn-off");
|
||
|
BlinkerButton Button4("btn-start");
|
||
|
//declaer Slider with certain keyname
|
||
|
BlinkerSlider Slider1(Slider_1);
|
||
|
|
||
|
//define vairable
|
||
|
int counter,timer,time1,time2,a,b = 0;
|
||
|
float i=0;
|
||
|
|
||
|
//Button1 function::state check
|
||
|
void button1_callback(const String & state)
|
||
|
{
|
||
|
BLINKER_LOG2("get button1 state: ", state);
|
||
|
if(digitalRead(D5)){ Button1.print("未加水");}else{ Button1.print("正在加水..");}
|
||
|
if(a==1){ Blinker.print("剩余分钟:");
|
||
|
Blinker.print((time2-Blinker.time())/60);}
|
||
|
}
|
||
|
|
||
|
//Button2 function::on
|
||
|
void button2_callback(const String & state)
|
||
|
{
|
||
|
BLINKER_LOG2("get button2 state: ", state);
|
||
|
digitalWrite(D5, LOW);
|
||
|
if(digitalRead(D5)){ Button2.print("停止加水");}else{ Button2.print("开始加水..");}
|
||
|
}
|
||
|
|
||
|
//Button3 function::off
|
||
|
void button3_callback(const String & state)
|
||
|
{
|
||
|
BLINKER_LOG2("get button3 state: ", state);
|
||
|
|
||
|
digitalWrite(D5, HIGH);
|
||
|
|
||
|
if(digitalRead(D5)){ Button3.print("加水已停止.");}else{ Button3.print("正在加水..");}
|
||
|
if(a==1){delay(500);Button3.print("加水已终止!");}
|
||
|
|
||
|
a=0; //reset key var a
|
||
|
}
|
||
|
|
||
|
//Button4 function::start on
|
||
|
void button4_callback(const String & state)
|
||
|
{
|
||
|
BLINKER_LOG2("get button4 state: ", state);
|
||
|
|
||
|
a=1;
|
||
|
digitalWrite(D5, LOW);
|
||
|
|
||
|
time1=Blinker.time();
|
||
|
time2=time1+timer*60;
|
||
|
BLINKER_LOG2("get slider value: ", time2-Blinker.time());
|
||
|
Button4.print("开始计时加水!");
|
||
|
}
|
||
|
|
||
|
//skider function
|
||
|
void slider1_callback(int32_t value)
|
||
|
{
|
||
|
timer=value;
|
||
|
}
|
||
|
|
||
|
//setup function
|
||
|
void setup()
|
||
|
{
|
||
|
Serial.begin(115200);
|
||
|
|
||
|
pinMode(D5, OUTPUT);
|
||
|
pinMode(D7, INPUT);
|
||
|
digitalWrite(D5, HIGH);
|
||
|
|
||
|
Blinker.begin(/*auth,*/ ssid, pswd);
|
||
|
Button1.attach(button1_callback);
|
||
|
Button2.attach(button2_callback);
|
||
|
Button3.attach(button3_callback);
|
||
|
Button4.attach(button4_callback);
|
||
|
Slider1.attach(slider1_callback);
|
||
|
}
|
||
|
|
||
|
//main loop function
|
||
|
void loop()
|
||
|
{
|
||
|
Blinker.run();
|
||
|
|
||
|
if(a==1&&time2>=Blinker.time())
|
||
|
{
|
||
|
if((time2-Blinker.time())/60==0&&b<=(millis()-1000)){ Blinker.print("剩余秒数:");Blinker.print(time2-Blinker.time());b=millis();}
|
||
|
|
||
|
if((time2-Blinker.time())>60&&b<=(millis()-15000))
|
||
|
{
|
||
|
Blinker.print("剩余分钟:");
|
||
|
Blinker.print((time2-Blinker.time())/60);
|
||
|
b=millis();
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
if(a==1&&time2<=Blinker.time())
|
||
|
{
|
||
|
delay(500);
|
||
|
Button4.print("加水结束!!");
|
||
|
Blinker.notify("计时加水已结束!");
|
||
|
|
||
|
digitalWrite(D5, HIGH);
|
||
|
a=0;
|
||
|
}
|
||
|
|
||
|
}
|