完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.基本功能描述
我是使用了ESP8266 12f 控制两个舵机 如图: 舵机1开 /关 ,分别控制舵机1的开关和闭合 舵机2同舵机1相同 2.程序 #include #define BLINKER_WIFI #include #include //needed for library #include #include #include 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); //定义舵机PWM线连接的是esp8266开发板上的D4引脚 myservo2.attach(5); //定义舵机PWM线连接的是esp8266开发板上的D4引脚 } //----------------------------------------------------------------------------------------------------------- void loop() { digitalWrite(LED_BUILTIN, HIGH); Blinker.run(); //*每次运行都会将设备收到的数据进行一次解析。 digitalWrite(LED_BUILTIN, LOW);// 在使用WiFi接入时,该语句也负责保持网络连接*/ delay(200); } 3.接线图 用node MCU也可以 只不过接线的时候注意引脚 烧录程序 接线如图 ![在这里插入图片描述](?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MTM5NzIxNQ==,size_16,color_FFFFFF,t_70 烧录后 把IO 0断开 就可以进行配置网络了 4.配置方法 打开无线网 然后连接名字为AutoConnectAP的WIFI热点 会自动登录配网页面 如果不自动登录 可以点开网络旁边的感叹号 有网络的IP地址 直接在浏览器中输入也可以登录 然后在点灯科技配置自己的按键和滑块 5.注意事项 注意 按键和滑块的键名和按键类型不要配置错了 |
|
|
|
只有小组成员才能发言,加入小组>>
3263 浏览 9 评论
2944 浏览 16 评论
3443 浏览 1 评论
8955 浏览 16 评论
4036 浏览 18 评论
1078浏览 3评论
558浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
551浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2286浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1848浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 15:53 , Processed in 0.352739 second(s), Total 44, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号