ESP8266驱动SG90舵机控制开关灯(灯的开关)的折腾记录
https://blog.csdn.net/qq_47749454/article/details/117638828
想法来源地址在上面,可以去参考一下,建议是结合两篇文章一块看,按照大佬的先来折腾一次,有问题了在看我这个,会比较齐全。
具体的折腾细节方面可以去上面的博主页面去参考,这里想聊一些那个博主没涉及到的。
1.买的型号,SG90舵机,淘宝应该很多,和ESP8266的连线也是ok的,没有困难,连完线难题就开始了,首先舵机驱动并没有搞过,其次ESP8266也忘记的差不多了,然后,这个程序实际上还有另外一个第三方库,Bliker点灯科技,他的库也没用过,也没了解过,那就简单点,直接copy(不是)借鉴上面大佬的代码,到自己的开发环境,编译烧写,发现不起作用,舵机是可以转动,但是只能转动一点点,和大佬代码里的29度和-29度并没有关系,于是开始了反复的debug,于是一天过去了。
2.第二天,准备换个思路,先去百度找到一个单独驱动舵机的程序,就是让舵机自己正转180,再倒转180,结果烧写进去,发现我自己这个,只能转动90度,和别人写的根本不一样,于是,我就想着,驱动不成就先放弃吧,角度也不定是固定的,所以就放弃了挣扎,能转动一定的符合要求的角度就ok了。
3.再有一个,就是舵机怎么和开关绑定的问题,舵机这么轻,也并没有一个很好的方式来固定到开关上,所以一开始就想着搞个透明胶带,后来才上了热熔胶,上了热熔胶也来来回回粘了好几次,建议是先挤一丢丢热熔胶在舵机和开关盖子上,把这两个东西固定住,并且压紧等几分钟,看效果还ok了之后,再松掉,加多点热熔胶固定周边,(热熔胶这玩意还真的好用,因为开关的壳子和舵机表面都本来就很光滑的,所以基本可以不费太多事就可以完美拆除,并且不留痕迹,以后要多买一些备用了~~
4.再有,就是blinker这个app,上面博主并没有涉及到blinker这个app怎么搞,只是接入了小爱同学,实际上blinker这个app也提供了丰富的自定义能力,来让你自己去在app里DIY你自己设备的控制面板上的按钮,你DIY的按钮的ID或者说标识,要和你的实际程序里的代码相吻合,然后就可以正常使用了。
5. 再有就是说,不知道是我的姿势有问题,还是买的舵机力道太小了,我这个 舵机居然无法在侧边打开和关闭开关,最终没办法,只能换个单边的头,用来做触发操作,在每次开灯操作触发的代码上外挂自己的方法,来实现功能~~~
6. 最后,再有就是,接入小爱同学的话,小爱同学是要即时返回的,所以如果你的代码中,操作舵机这种需要等待的方法,尽量不要去用,不然小爱在每次操作需要等待的操作的时候,会提示说“要操作的设备出问题了”之类的提示语,当然我就没所谓了,因为已经能够实现关灯的动作触发了,只是因为没有即时返回导致音箱提示异常,谁还在乎 个音箱说设备在不在呢对不对~
7. 最后的最后,前面也说了,因为单舵机并不支持能够开关等,所以说后面可能还需要在继续买个单独的舵机,用热熔胶粘贴到设备的后面,来实现开关灯都可以独立控制。
8. 最后的最后的最后,附上我的调试的代码,角度或者是具体执行的方法等这些东西,是要你自己去调试的,所以这部分我会特殊标注出来。
#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET#include <Blinker.h>
#include<Servo.h>char auth[] = "Your Sercet Key";
char ssid[] = "Your SSID";
char pswd[] = "Your SSID Password";bool oState = false;
Servo servo;
int pos = 0;void doAction(const String & state) {
//here is your method BLINKER_LOG("doAction : ", state);if(state == BLINKER_CMD_ON) {//暂时先空着,先不留开开关的BLINKER_LOG("开关 开了");} else if(state == BLINKER_CMD_OFF) {BLINKER_LOG("开关 关了");for (pos = 90; pos >= 0; pos --) { // 从180°到0°servo.write(pos); // 舵机角度写入delay(15); // 等待转动到指定角度}delay(200);for (pos = 0; pos <= 90; pos ++) { // 0°到180°// in steps of 1 degreeservo.write(pos); // 舵机角度写入delay(15); // 等待转动到指定角度}delay(200);//延时0.2s}
}
void miotPowerState(const String & state)
{BLINKER_LOG("need set power state: ", state);if (state == BLINKER_CMD_ON) {digitalWrite(LED_BUILTIN, LOW);doAction(state);BlinkerMIOT.powerState("on");BlinkerMIOT.print();oState = true;}else if (state == BLINKER_CMD_OFF) {digitalWrite(LED_BUILTIN, HIGH);doAction(state);BlinkerMIOT.powerState("off");BlinkerMIOT.print();oState = false;}
}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("millis", BlinkerTime);
}void setup()
{Serial.begin(115200);BLINKER_DEBUG.stream(Serial);pinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);servo.attach(D0);Blinker.begin(auth, ssid, pswd);Blinker.attachData(dataRead);BlinkerMIOT.attachPowerState(miotPowerState);BlinkerMIOT.attachQuery(miotQuery);doAction("off");
}void loop()
{Blinker.run();
}
ESP8266驱动SG90舵机控制开关灯(灯的开关)的折腾记录相关推荐
- (含代码)ESP8266+舵机 制作wifi灯控开关(arduino,点灯科技,小爱同学/天猫精灵实现)
目录 项目涉及的主代码 前言 一.环境搭建 二.开发步骤 1.注册点灯科技平台 2.在点灯科技平台注册设备,获取Secret Key 3.在Arduino IDE中编写代码,写入ESP8266 4.编 ...
- 怎么控制LED灯的开关呢?最简单的方法是给它加一个开关
怎么控制LED灯的开关呢?最简单的方法是给它加一个开关,然后串联一个电阻,闭合开关,LED灯就会亮,断开开关,LED灯就会熄灭,但这种方法的缺陷是得需要人为的参与. 如果频率很快,比如一秒钟开关100 ...
- Arduino-Mixly-超声波测距仪-实现距离控制LED灯的开关
Arduino-Mixly-超声波测距仪-实现距离控制LED灯的开关 Arduino:个人理解那块电板就叫arduino,本质上它是一块单片机(功能不怎么强大的计算机),具备了接受信息处理信息的能力, ...
- 鸿蒙系统分享----软件驱动使用JS控制LED灯实验方法
第一:鸿蒙系统环境搭建方法 1.BearPi-HM Micro ubuntu 镜像下载和虚拟机VMware Workstation 安装(虚拟机环境) 2.VS Code的安装和安装RaiDrive工 ...
- STM32驱动sg90舵机失败
背景: 十月份参加学校举办的Robomaster校内赛,使用sg90舵机驱动机械臂夹取小球. 遇到问题: 使用STM32单片机的定时器输出PWM来驱动舵机,一直无法使舵机运 ...
- 基于STM32驱动SG90舵机
1.舵机介绍 这边对SG90舵机进行一个简短的文字介绍: 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围,总间隔为2ms.脉冲的宽度将决定马达转动的距 ...
- 【STM32】基于F103C8T6和ESP01远程控制灯光开关(SG90舵机控制)
先上实物! 视频演示 主控和配件选择 主控板选择经济实惠的c8t6,网络通信选择esp01,因为寝室使用不能更改电路,所以用一个sg90舵机来按点灯开关. 服务器 服务器使用自己搭建的emqx服务器, ...
- C51单片机定时器2实现SG90舵机控制
谈起舵机最初的了解应用于航模,偶然的机会在网上看到有牛人使用多个舵机做人形机器人的关节,感觉这小东西很有趣,蒙发了买来学习学习的想法,这已经是多年前的事了,后来由于某些原因,这个想法直到今年才落地.小 ...
- 驱动——按键中断控制LED灯实验
三个按键实现按键中断 要求:按键按一下灯亮,再按一下灯灭 注:由于开发板位置,为了方便一一对应观察,采用key1控制LED3,key2控制LED2,key3控制LED1 0.添加相关设备树节点信息 ① ...
最新文章
- MIME::Base64::encode格式
- hibernate查询之条件查询
- 【算法竞赛学习】资金流入流出预测-挑战Baseline_数据探索与分析1
- 【算法】Huffman编码(数据结构+算法)
- 2的负x次幂图像_数学| NO.2,3函数 T51
- sql机器学习服务_机器学习服务–在SQL Server中配置R服务
- svn关键字替换_SVN关键字替换示例
- extjs office java_Extjs使用(最最基础)
- 项目经理应具备的9种能力
- 初中英语语法(014)-现在完成时
- CCF NOI 2022获奖名单
- 李开复,活在AI与人群里
- C语言 :探究Char 到底是啥
- 百度分享不支持https的解决方案
- Mac电脑打开app,提示无法验证此App不包含恶意软件解决方法
- PS中矢量形状图层的合并交叉等运算
- 断网后parsec无法检测发现台式机设备的解决办法
- 绵阳计算机维修价格,绵阳台式电脑维修
- 22-07-14 西安 Git 分布式版本控制系统 、代码管理
- 程序人生--2000年(4)