查看: 632|回复: 14

[已解答] 小爱同学控制风扇风速

[复制链接]

该用户从未签到

发表于 2021-6-10 16:18 | 显示全部楼层 |阅读模式
本帖最后由 BigStudent 于 2021-6-13 17:32 编辑

使用了红外发射模块连接到Node mcu(8266)上,通过小爱同学来控制风扇,现在可以正常地开启和关闭,但是在调节风速上不知怎么处理?

#include <Blinker.h>
#include <IRremote.h>

void miotLevel(uint8_t level)
{
     BLINKER_LOG("need set level: ", level);
     // 0:AUTO MODE, 1-3 LEVEL

     setLevel = level;

     BlinkerMIOT.level(level);
     BlinkerMIOT.print();
}

上述代码中的参数level不知怎么用?美的风扇似乎无法获取当前处于几档,所以直接和小爱说调到几档似乎不得行。
有没有让小爱调大风速或者调小风速的回调函数呢




该用户从未签到

发表于 2021-6-11 16:57 | 显示全部楼层
level为当前挡位,可以是1、2、3,您使用if判断后根据挡位做出相应的控制即可

该用户从未签到

 楼主| 发表于 2021-6-13 00:39 | 显示全部楼层
点灯官方 发表于 2021-6-11 16:57
level为当前挡位,可以是1、2、3,您使用if判断后根据挡位做出相应的控制即可 ...

谢谢回复。不过我还有个疑问。例如我设置风扇挡位level = 3,但是我又无法获知当前风扇的挡位是多少,如何用红外调节(发射一次红外信号可以升一档或者降一档)

点评

自己在程序用个全局变量记录下  详情 回复 发表于 2021-6-13 00:44

该用户从未签到

发表于 2021-6-13 00:44 | 显示全部楼层
BigStudent 发表于 2021-6-13 00:39
谢谢回复。不过我还有个疑问。例如我设置风扇挡位level = 3,但是我又无法获知当前风扇的挡位是多少,如 ...

自己在程序用个全局变量记录下

该用户从未签到

 楼主| 发表于 2021-6-13 09:30 | 显示全部楼层
奈何col 发表于 2021-6-13 00:44
自己在程序用个全局变量记录下

这个方法也不太好,因为风扇有记录挡位的功能,我打开风扇后,就已经处于上次的挡位了。而且如果有一次红外发射后风扇没有收到,但是全局变量却变化了,就会导致二者的量对应不上。没有办法获取风扇反馈的状态还是太行。

有没有直接让小爱调大风速或者调小风速的回调函数呢?没有开发文档提到这方面,有点无从下手

点评

没看懂你说的,这只是个很基础的编程知识,都是这么做的。。。。  详情 回复 发表于 2021-6-14 10:27

该用户从未签到

发表于 2021-6-14 10:27 | 显示全部楼层
BigStudent 发表于 2021-6-13 09:30
这个方法也不太好,因为风扇有记录挡位的功能,我打开风扇后,就已经处于上次的挡位了。而且如果有一次红 ...

没看懂你说的,这只是个很基础的编程知识,都是这么做的。。。。

该用户从未签到

发表于 2021-6-14 20:59 | 显示全部楼层
首先你的遥控器上得有这个加挡减挡功能,然后学习这两个按键的红外编码,然后可以在level 等于1时候让红外模块发送加挡指令,level等于3的时候发送减挡指令。

该用户从未签到

 楼主| 发表于 2021-6-15 09:07 | 显示全部楼层
renshuang 发表于 2021-6-14 20:59
首先你的遥控器上得有这个加挡减挡功能,然后学习这两个按键的红外编码,然后可以在level 等于1时候让红外 ...

你的意思是说让“调为一档”的语音指令来代替“调低风速”,“调为3档”代替“调高风速”是吧

该用户从未签到

 楼主| 发表于 2021-6-15 09:14 | 显示全部楼层
奈何col 发表于 2021-6-14 10:27
没看懂你说的,这只是个很基础的编程知识,都是这么做的。。。。

很简单啊,就是全局变量记录的数值和风扇的真实挡位是可能对应不上的。因为发射红外信号后发射端并没有接到反馈是否红外信号发射成功,并非可靠的方式,即使接收端没有收到,全局变量也会自增自减。
所以当出现发射红外信号后,如果风扇被东西挡到而无法获取红外信号,并没有调档时,其实全局变量也是会进行自增或自减的。由此,全局变量的值就和风扇真实挡位出现偏差,之后的代码就都乱了。

点评

看起来,和blinker没有关系,状态都需要自己记录和处理  详情 回复 发表于 2021-6-20 23:04
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

点灯APP界面配置乱码
点灯APP界面配置乱码
界面配置导出页面的内容乱码
esp32s2 在Arduino IDE调试USB CDC
esp32s2 在Arduino IDE调
各位大佬好,最近尝试弄清如何使用esp32s2的usb功能。然后在Github上找的代码,放到自
天气显示屏代码开源与部分说明
天气显示屏代码开源与部分
前言:这个帖子可能有点乱(其实是第一次写那么长代码的帖子),本来想分几篇慢慢写的
教你让OLED动起来!多重字符串版!
教你让OLED动起来!多重字
大家都知道:arduino单片机是单线程的 而上次教程中的多段字符串的运行速度必须一致
DIY炫彩灯带,竟如此简单,更有硬件开发工具免费领!
DIY炫彩灯带,竟如此简单
什么是涂鸦Arduino SDK? Arduino 是全球最流行的开源硬件平台,涂鸦官方推出的 Ardui
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表