第一次写博客,有什么不足,希望大家指正。
文章目录
- 1.基本功能描述
- 2.程序
- 3.接线图
- 4.配置方法
- 5.注意事项
custom wifimanager 这个库在云盘在中呢
链接:https://pan.baidu/s/1RjYO0IF1sZDa0K9GJhi0xw
提取码:kx3l
缺少什么库 就在库管理中,搜索相应的下载就行了
1.基本功能描述
我是使用了ESP8266 12f 控制两个舵机 如图:
舵机1开 /关 ,分别控制舵机1的开关和闭合
舵机2同舵机1相同
2.程序
#include <Servo.h>
#define BLINKER_WIFI
#include <Blinker.h>
#include <ESP8266WiFi.h>
//needed for library
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <CustomWiFiManager.h>
char auth[] = " "; // 这个一定要写自己blinker app 中那个密匙
char ssid[] = ""; //wifi 和密码可以不用写 待会会有手机配网
char pswd[] = ""; //
//
BlinkerButton Button1("btn1_k"); //舵机1的开
BlinkerButton Button2("btn1_g"); //舵机1的关
BlinkerButton Button3("btn2_k"); //舵机2的开
BlinkerButton Button4("btn2_g"); //舵机2的关
//分别创建我们要控制的舵机1和2
Servo myservo1;//定义(创建)一个舵机名称为myservo1
Servo myservo2;//定义(创建)一个舵机名称为myservo2
//创建6个滑块
BlinkerSlider Slider1("ser_max1"); //滑块1 控制第一个舵机最大角度
BlinkerSlider Slider2("ser_min1"); //滑块2 控制第一个舵机最小角度
BlinkerSlider Slider3("ser_mid1"); //滑块3 控制第一个舵机中间角度
BlinkerSlider Slider4("ser_max2"); // 滑块4 控制第二个舵机最大角度
BlinkerSlider Slider5("ser_min2"); //滑块5 控制第二个舵机最小角度
BlinkerSlider Slider6("ser_mid2"); //滑块6 控制第二个舵机中间角度
//定义6个变量
int ser_max1, ser_min1, ser_mid1;
int ser_max2, ser_min2, ser_mid2;
bool on_or_off = false; //这个可有可无吧 意思是创建一个Bool类型的变量
// app 端按下按键即会执行该函数 回调函数--------------------------------------------------------------------------------------------------------
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);//读取按键状态
myservo1.write(ser_max1); //写入滑块1 的角度 这个角度大小可以通过滑块1 来设置
Blinker.vibrate(); //使手机震动
Blinker.delay(1000);//这个delay 一定要有 不然舵机转不过来
myservo1.write(ser_mid1); //15s后恢复到滑块3设置的角度 ,因为既然控制开关了 就必须考虑到我们用手按的时候 舵机不能挨着开关呀
Blinker.vibrate(); //使手机震动
}
void button2_callback(const String & state) {
BLINKER_LOG("get button state: ", state);//这个和上面的一样
myservo1.write(ser_min1);
Blinker.vibrate();
Blinker.delay(1000);
myservo1.write(ser_mid1); //写入设置好的角度90
Blinker.vibrate(); //使手机震动
}
void button3_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
myservo2.write(ser_max2); //写入设置好的角度90
Blinker.vibrate(); //使手机震动
Blinker.delay(1000);//这个delay 一定要有 不然舵机转不过来
myservo2.write(ser_mid2); //写入设置好的角度90
Blinker.vibrate(); //使手机震动
}
void button4_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
myservo2.write(ser_min2); //写入设置好的角度90
Blinker.vibrate(); //使手机震动
Blinker.delay(1000);//这个delay 一定要有 不然舵机转不过来
myservo2.write(ser_mid2); //写入设置好的角度90
Blinker.vibrate(); //使手机震动
}
//------------------------------------------------------------------------------------------------------------------------------------
void slider1_callback(int32_t value)//这个是滑块程序
{
ser_max1 = value;
myservo1.write(ser_max1);
Blinker.vibrate(); //使手机震动
Blinker.delay(1000);
BLINKER_LOG("get slider value: ", value);
}
void slider2_callback(int32_t value)
{
ser_min1 = value;
myservo1.write(ser_min1);
Blinker.vibrate(); //使手机震动
Blinker.delay(1000);
BLINKER_LOG("get slider value: ", value);
}
void slider3_callback(int32_t value)
{
ser_mid1 = value;
myservo1.write(ser_mid1);
Blinker.vibrate(); //使手机震动
Blinker.delay(1000);
BLINKER_LOG("get slider value: ", value);
}
void slider4_callback(int32_t value)
{
ser_max2 = value;
myservo2.write(ser_max2);
Blinker.vibrate(); //使手机震动
Blinker.delay(1000);
BLINKER_LOG("get slider value: ", value);
}
void slider5_callback(int32_t value)
{
ser_min2 = value;
myservo2.write(ser_min2);
Blinker.vibrate(); //使手机震动
Blinker.delay(1000);
BLINKER_LOG("get slider value: ", value);
}
void slider6_callback(int32_t value)
{
ser_mid2 = value;
myservo2.write(ser_mid2);
Blinker.vibrate(); //使手机震动
Blinker.delay(1000);
BLINKER_LOG("get slider value: ", value);
}
//-------------------------------------------------------------------------------------------------------------------------
void setup() {
// 初始化串口,并开启调试信息
Serial.begin(115200);
WiFiManager wifiManager;//自动配网
wifiManager.autoConnect("AutoConnectAP");
Serial.println("connected...yeey :)");
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT); //LED_BUILTIN 宏就是开发板指示灯的io口
digitalWrite(LED_BUILTIN, HIGH);
// 初始化blinker
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);
Slider2.attach(slider2_callback);
Slider3.attach(slider3_callback);
Slider4.attach(slider4_callback);
Slider5.attach(slider5_callback);
Slider6.attach(slider6_callback);
myservo1.attach(16); //esp8266的GIPIO16 对应NODEmcu 的D0
myservo2.attach(5); //同上 对应modeMCU 的,.....
}
//-----------------------------------------------------------------------------------------------------------
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
Blinker.run(); //*每次运行都会将设备收到的数据进行一次解析。
digitalWrite(LED_BUILTIN, LOW);// 在使用WiFi接入时,该语句也负责保持网络连接*/
delay(200);
}
3.接线图
其中 attach(16) 就是舵机接在 esp8266的gpio 16上 就是nodeMCU 的D0上
用node MCU也可以 只不过接线的时候注意引脚
烧录程序 接线如图
![在这里插入图片描述](https://img-blog.csdnimg/20210508211327886.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MTM5NzIxNQ==,size_16,color_FFFFFF,t_70
烧录后 把IO 0断开 就可以进行配置网络了
4.配置方法
打开无线网 然后连接名字为AutoConnectAP的WIFI热点
会自动登录配网页面
如果不自动登录 可以点开网络旁边的感叹号
有网络的IP地址 直接在浏览器中输入也可以登录
然后在点灯科技配置自己的按键和滑块
注意点:
数据键名 要正确 是在代码中
滑块的也是 数据键名 和 最大值等都要对
5.注意事项
注意 按键和滑块的键名和按键类型不要配置错了
更多推荐
ESP8266 12F 点灯科技APP 控制两个舵机
发布评论