【无聊的改造】esp-01s舵机控制开关灯支持小爱同学
无聊的改造 esp-01s舵机控制开关灯支持小爱同学用到的模块有
esp-01s/sg90舵机/esp-01s配套的烧写器
http://v.youku.com/v_show/id_XNTg1ODE4MTYyNA==.html?x&sharefrom=iphone&sharekey=76cbdc36a6d73c6279ae660e346825313
#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
#include <Servo.h>
#include <Blinker.h>
char auth[] = "a5146fd5a283"; // blinker app 中那个密匙key
char ssid[] = "wldgz"; //wifi名称(英文名称 2.4gwifi)
char pswd[] = "wldgz5566"; //wifi密码
// 创建开关
BlinkerButton Button1("btn_k"); //舵机的开
BlinkerButton Button2("btn_g"); //舵机的关
//创建舵机
Servo myservo;//定义(创建)一个舵机名称为myservo
//创建6个滑块
BlinkerSlider Slider1("ran_max1"); //滑块1 控制第一个舵机最大角度
BlinkerSlider Slider2("ran_min1"); //滑块2 控制第一个舵机最小角度
BlinkerSlider Slider3("ran_mid1"); //滑块3 控制第一个舵机中间角度
//定义3个变量
int ran_max1, ran_min1, ran_mid1;
//创建一个Bool类型的变量
bool on_or_off = false;
bool oState = false;
// app 端按下按键即会执行该函数 回调函数
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);//读取按键状态
myservo.write(ran_max1);//写入滑块1 的角度 这个角度大小可以通过滑块1 来设置
Blinker.vibrate(); //使手机震动
Blinker.delay(1000); //这个delay 一定要有 不然舵机转不过来
myservo.write(ran_mid1);//1s后恢复到滑块3设置的角度,
Blinker.vibrate();//使手机震动
}
void button2_callback(const String & state) {
BLINKER_LOG("get button state: ", state);//这个和上面的一样
myservo.write(ran_min1);
Blinker.vibrate();
Blinker.delay(1000);
myservo.write(ran_mid1);
Blinker.vibrate();
}
//小爱电源回调函数
//里面同样设置舵机的动作
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
// digitalWrite(LED_BUILTIN, HIGH);
myservo.write(ran_max1);//写入滑块1 的角度 这个角度大小可以通过滑块1 来设置
Blinker.delay(1000); //这个delay 一定要有 不然舵机转不过来
myservo.write(ran_mid1);//1s后恢复到滑块3设置的角度,
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
//digitalWrite(LED_BUILTIN, LOW);
myservo.write(ran_min1);
Blinker.delay(1000);
myservo.write(ran_mid1);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
void miotQuery(int32_t queryCode)
{
BLINKER_LOG("MIOT Query codes: ", queryCode);
switch (queryCode)
{
case BLINKER_CMD_QUERY_ALL_NUMBER :
BLINKER_LOG("MIOT Query All");
BlinkerMIOT.powerState(oState ? "on" : "off");
BlinkerMIOT.print();
break;
case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
BLINKER_LOG("MIOT Query Power State");
BlinkerMIOT.powerState(oState ? "on" : "off");
BlinkerMIOT.print();
break;
default :
BlinkerMIOT.powerState(oState ? "on" : "off");
BlinkerMIOT.print();
break;
}
}
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
Blinker.vibrate();
uint32_t BlinkerTime = millis();
Blinker.print(BlinkerTime);
Blinker.print("millis", BlinkerTime);
}
//滑块设置
void slider1_callback(int32_t value) //最大角度滑动条
{
ran_max1 = value;
myservo.write(ran_max1);
Blinker.vibrate();//使手机震动
Blinker.delay(1000);
BLINKER_LOG("get slider value: ", value);
}
void slider2_callback(int32_t value)//最小角度滑动条
{
ran_min1 = value;
myservo.write(ran_min1);
Blinker.vibrate();//使手机震动
Blinker.delay(1000);
BLINKER_LOG("get slider value: ", value);
}
void slider3_callback(int32_t value) //中间角度滑动条
{
ran_mid1 = value;
myservo.write(ran_mid1);
Blinker.vibrate();//使手机震动
Blinker.delay(1000);
BLINKER_LOG("get slider value: ", value);
}
// 初始化串口,并开启调试信息
void setup() {
Serial.begin(115200);
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);//LED_BUILTIN 开发版上的led 不需要灯亮可以删掉
digitalWrite(LED_BUILTIN, HIGH);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback); //绑定按键执行回调函数
Button2.attach(button2_callback); //绑定按键执行回调函数
Slider1.attach(slider1_callback);
Slider2.attach(slider2_callback);
Slider3.attach(slider3_callback);
myservo.attach(0); //定义舵机连接的引脚
BlinkerMIOT.attachQuery(miotQuery); //小爱同学回调函数
Blinker.attachData(dataRead);
BlinkerMIOT.attachPowerState(miotPowerState);
}
void loop() {
Blinker.run();//*每次运行都会将设备收到的数据进行一次解析。
}
//blink app 界面配置代码复制到app里面即可
//{¨version¨¨2.0.0¨¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨dark¨¨background¨{¨img¨¨assets/img/headerbg.jpg¨¨isFull¨«}}¨dashboard¨|{¨type¨¨tex¨¨t0¨¨blinker入门示例¨¨t1¨¨文本2¨¨bg¨Ë¨ico¨´´¨cols¨Í¨rows¨Ê¨key¨¨tex-272¨´x´É´y´É¨speech¨|÷¨lstyle¨Ê¨clr¨¨#FFF¨}{ßC¨btn¨ßJ¨fal fa-power-off¨¨mode¨ÉßE¨关灯¨ßGßHßIÉßKËßLËßM¨btn_g¨´x´Î´y´ÏßPÉ}{ßCßSßJßTßUÉßE¨开灯¨ßGßHßIÉßKËßLËßM¨btn_k¨´x´Ê´y´ÏßPÉ}{ßC¨ran¨ßE¨最大角度¨ßQ¨#389BEE¨¨max¨¢2u¨min¨ÉßIÉßKÑßLËßM¨ran_max1¨´x´É´y´¤DßPÉ}{ßCßZßE¨最小角度¨ßQßbßcº0ßdÉßIÉßKÑßLËßM¨ran_min1¨´x´É´y´ÒßPÉ}{ßCßZßE¨中间角度¨ßQßbßcº0ßdÉßIÉßKÑßLËßM¨ran_mid1¨´x´É´y´¤BßPÉ}{ßC¨deb¨ßUÉßIÉßKÑßLÌßM¨debug¨´x´É´y´Ì}÷¨actions¨|¦¨cmd¨¦¨switch¨‡¨text¨‡¨on¨¨打开?name¨¨off¨¨关闭?name¨—÷¨triggers¨|{¨source¨ßn¨source_zh¨¨开关状态¨¨state¨|ßpßr÷¨state_zh¨|¨打开¨´关闭´÷}÷´rt´|÷}
666楼主这个代码刚好帮了大忙 刚好我也需要,谢谢楼主 :):):):):):):):):):):):):) esp-01s esp-01s esp-01s 楼主的教程实操一遍过。楼主能出一个8266双开并联现有开关同时使用的教程吗 烧录程序上传成功,但在点灯.blinker里,设备却上不了线,找不到原因,怎么办? hmsabc 发表于 2022-6-11 12:16
烧录程序上传成功,但在点灯.blinker里,设备却上不了线,找不到原因,怎么办? ...
找到原因了,用同样的程序写入另一esp8266模块,成功了,说明原先的那块坏了。真害人!新手真得注意。
页:
[1]
2