本帖最后由 安少 于 2021-2-18 15:24 编辑
/***********************************************************************************************
定义头文件
***********************************************************************************************/
#define BLINKER_WIFI
#define BLINKER_WITHOUT_SSL//非SSL加密通信接入,省堆栈
#define BLINKER_PRINT Serial //给debug打开串口
#include <ESP8266WiFi.h>
#include <Blinker.h>
#define TEXTE_ip "tex-ip"
#define TEXTE_zt "tex-zt"
/***********************************************************************************************
定义全局变量
***********************************************************************************************/
char auth[] = "***************";
char ssid[] = "**************"; //你的wifi 名称
char pswd[] = "**************"; //你的wifi 密码
const int D0 = D0;
const int buttonPin = 2;//01、01S对接口复用了,pin2上电时得拉高,使用其他引脚就不会有影响
int buttonState = 0;
int A1 = 0;
int A2 = 0;
int A3 = 0;
/***********************************************************************************************
新建数据类型组件对象,作用:将数据传输到手机blinker app
***********************************************************************************************/
BlinkerText Text_ip(TEXTE_ip);
BlinkerText Text_zt(TEXTE_zt);
BlinkerButton Button1("btn-A1");
BlinkerButton Button2("btn-A2");
BlinkerButton Button3("btn-A3");
BlinkerNumber Number1("num-A1");
BlinkerNumber Number2("num-A2");
BlinkerNumber Number3("num-A3");
BlinkerNumber Number4("num-xinhao");//定义信号强度键名
/***********************************************************************************************
按下按键即会执行该函数
***********************************************************************************************/
void button1_callback(const String & state) {
BLINKER_LOG("get button state1: ", state);
if (buttonState == HIGH) {
Blinker.vibrate();
digitalWrite(D0, LOW);
delay(1000);
digitalWrite(D0, HIGH);
A1++;
Number1.print(A1);
}
else {
Text_zt.print("电脑已开机");
}
}
void button2_callback(const String & state1) {
BLINKER_LOG("get button state2: ", state1);
if (buttonState == HIGH) {
Text_zt.print("电脑已关机");
}
else {
Blinker.vibrate();
digitalWrite(D0, LOW);
delay(10000);
digitalWrite(D0, HIGH);
A2++;
Number2.print(A2);
}
}
void button3_callback(const String & state1) {
BLINKER_LOG("get button state3: ", state1);
Blinker.vibrate();
digitalWrite(D0, LOW);
delay(10000);
digitalWrite(D0, HIGH);
delay(1000);
digitalWrite(D0, LOW);
delay(1000);
digitalWrite(D0, HIGH);
A3++;
Number3.print(A3);
}
/***********************************************************************************************
附加心跳包
用于APP上实时更新按键次数数据
***********************************************************************************************/
void Number() {
delay(2000);
Number1.print(A1);
Number2.print(A2);
Number3.print(A3);
Number4.print(WiFi.RSSI());
Text_ip.print(WiFi.localIP().toString().c_str());
if (buttonState == HIGH) {
Text_zt.print("电脑已关机");
}
else {
Text_zt.print("电脑已开机");
}
}
/***********************************************************************************************
将设置代码放在此处,运行一次
***********************************************************************************************/
void setup() {
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
// 初始化有LED的IO
pinMode(D0, OUTPUT);
pinMode(buttonPin, INPUT);
digitalWrite(D0, HIGH);
//Blinker.delay(180000);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
Button2.attach(button2_callback);
Button3.attach(button3_callback);
Blinker.attachHeartbeat(Number);
}
/***********************************************************************************************
把主代码放在这里,重复运行
***********************************************************************************************/
void loop() {
Blinker.run();
buttonState = digitalRead(buttonPin);
} |