#define BLINKER_WIFI
#define BLINKER_HTTP
#include <Blinker.h>
//#include <ESP8266WiFi.h>
#define L_PWM_PIN D1
#define R_PWM_PIN D2
#define L_DIR_PIN D3
#define R_DIR_PIN D4
char auth[] = "XXXXXXXXXXXX";
char ssid[] = "XXXXXXXXXXXX";
char pswd[] = "XXXXXXXXXXXX";
/* 新建组件对象*/
BlinkerButton Button_front("btn-front");
BlinkerButton Button_left("btn-turn-left");
BlinkerButton Button_back("btn-back");
BlinkerButton Button_right("btn-turn-right");
BlinkerButton Button_stop("btn-stop");
BlinkerButton Button_left_front("btn-left-front");
BlinkerButton Button_right_front("btn-right-front");
BlinkerButton Button_left_back("btn-left-back");
BlinkerButton Button_right_back("btn-right-back");
BlinkerNumber Number1("num-abc");
int counter = 0;
/* 前进*/
void Button_front_callback(const String & state) /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
analogWrite(L_PWM_PIN, 200);
digitalWrite(L_DIR_PIN, HIGH);
analogWrite(R_PWM_PIN, 200);
digitalWrite(R_DIR_PIN, HIGH);
/* 后退*/
void Button_back_callback(const String & state) /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
analogWrite(L_PWM_PIN, 200);
digitalWrite(L_DIR_PIN, LOW);
analogWrite(R_PWM_PIN, 200);
digitalWrite(R_DIR_PIN, LOW);
/* 左转*/
void Button_left_callback(const String & state) /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
analogWrite(L_PWM_PIN, 0);
digitalWrite(L_DIR_PIN, HIGH);
analogWrite(R_PWM_PIN, 200);
digitalWrite(R_DIR_PIN, HIGH);
/* 右转*/
void Button_right_callback(const String & state) /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
analogWrite(L_PWM_PIN, 200);
digitalWrite(L_DIR_PIN, HIGH);
analogWrite(R_PWM_PIN, 0);
digitalWrite(R_DIR_PIN, HIGH);
/* 停止*/
void Button_stop_callback(const String & state) /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
digitalWrite(L_PWM_PIN, 0);
//digitalWrite(L_DIR_PIN, HIGH);
digitalWrite(R_PWM_PIN, 0);
//digitalWrite(R_DIR_PIN, HIGH);
/* 左前进*/
void Button_left_front_callback(const String & state) /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
analogWrite(L_PWM_PIN, 100);
digitalWrite(L_DIR_PIN, HIGH);
analogWrite(R_PWM_PIN, 200);
digitalWrite(R_DIR_PIN, HIGH);
/* 右前进*/
void Button_right_front_callback(const String & state) /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
analogWrite(L_PWM_PIN, 200);
digitalWrite(L_DIR_PIN, HIGH);
analogWrite(R_PWM_PIN, 100);
digitalWrite(R_DIR_PIN, HIGH);
/* 左后退*/
void Button_left_back_callback(const String & state) /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
analogWrite(L_PWM_PIN, 100);
digitalWrite(L_DIR_PIN, LOW);
analogWrite(R_PWM_PIN, 200);
digitalWrite(R_DIR_PIN, LOW);
/* 右后退*/
void Button_right_back_callback(const String & state) /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
analogWrite(L_PWM_PIN, 200);
digitalWrite(L_DIR_PIN, LOW);
analogWrite(R_PWM_PIN, 100);
digitalWrite(R_DIR_PIN, LOW);
/* 如果未绑定的组件被触发,则会执行其中内容*/
void dataRead(const String & data)
BLINKER_LOG("Blinker readString: ", data);
counter++;
Number1.print(counter);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
pinMode(L_PWM_PIN, OUTPUT);
pinMode(L_DIR_PIN, OUTPUT);
pinMode(R_PWM_PIN, OUTPUT);
pinMode(R_DIR_PIN, OUTPUT);
analogWrite(L_PWM_PIN, 0);
digitalWrite(L_DIR_PIN, HIGH);
analogWrite(R_PWM_PIN, 0);
digitalWrite(R_DIR_PIN, HIGH);
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
Button_front.attach(Button_front_callback);
Button_left.attach(Button_left_callback);
Button_back.attach(Button_back_callback);
Button_right.attach(Button_right_callback);
Button_stop.attach(Button_stop_callback);
Button_left_front.attach(Button_left_front_callback);
Button_right_front.attach(Button_right_front_callback);
Button_left_back.attach(Button_left_back_callback);
Button_right_back.attach(Button_right_back_callback);
void loop() {
// put your main code here, to run repeatedly:
Blinker.run();