标题: 单片机433Mhz接收,解码后如何程序如何只处理一次? [打印本页]

作者: innere    时间: 2023-3-17 21:06
标题: 单片机433Mhz接收,解码后如何程序如何只处理一次?
需求,遥控按某个按键,第一次控制继电器吸,第二次控制继电器断
现情况是因为按一次,遥控会发多次,或者使用者按的时间有长有短
导致解码后不停的控制继电器分合,有什么办法在一次按键后只处理一次
解码用的是中断20uS,检测接收引脚电平那种方式能有几行代码最好
先行谢


作者: devcang    时间: 2023-3-17 22:04
现在的程序是如何的,本坛应该也能搜索到范例去参考
作者: innere    时间: 2023-3-17 22:13
devcang 发表于 2023-3-17 22:04
现在的程序是如何的,本坛应该也能搜索到范例去参考

搜到一个汇编的。。。很疲惫
作者: wulin    时间: 2023-3-17 22:16
收到第一次作个标记,连续收到相同码按一次计,结束后间隔一定时间清除标记,再次收到相同码按再次计。
作者: glinfei    时间: 2023-3-17 22:47
不知道你具体用哪个模块,一般都设成两个键,分别控制开关
作者: 人中狼    时间: 2023-3-17 23:13
单键很难解决这个问题
作者: lmn2005    时间: 2023-3-18 07:46
4楼的朋友说得对,设置个标志位。接收到信号后进行信号分析和处理,然后清除标志位,与红外的接收道理一样。
作者: a399288395    时间: 2023-3-18 09:34
情况没有描写清楚;433 是用的现成模块; 还是自己用单片机解码;
如果是模块  TB常用的模块 又分成自锁和非自锁以及互锁;如果是单片机解码,先把解码做好 再根据解码的返回值处理要做的动作;
原文:现情况是因为按一次,遥控会发多次,  ,,, 就这个情况 ;说明解码还没有顺利做好;类似于按键防抖没有做;按一次执行多次;  简单的处理办法就是和平时学的按键差不多;设立标志位或者松手检测;
作者: li64331218    时间: 2023-3-18 09:58
一般的按键响应应该是ms级别的。中断时间拉长点,不要频繁的进入中断。继电器吸合或者断开后有没有反馈标志。判断一下,在多长时间内认为是无效的。要根据你的具体应用场景来考虑了
作者: lkc8210    时间: 2023-3-18 14:03
新增倒计时变量和命令变量
每次成功解码后判断倒计时变量是否零
是零才放入命令变量
並且每次成功解码后都对倒计时变量赋值(如1000ms)
並在定时中断内減一,直到零

命令变量用完后要置零
作者: 1441339146    时间: 2023-3-27 12:59
当解码到正确的遥控器信号,单片机触发继电器动作,紧接着做一个标记屏蔽解码,同时开始倒计时1s。1s时间到后解除屏蔽,接续解码新的信号。这样就能做到触发后1s内不会触发第二遍。
作者: zch5200    时间: 2023-3-28 14:32
红外遥控器一般只发一次指令码,就算长按后面都只发引导码和空数据,单片机接收的数据里可以分析的。用标志位不是十分可靠,有可能把双击算按一次。
作者: jzyb    时间: 2023-3-28 16:28
可以在程序中添加一个标志位,用来记录当前继电器的状态。当遥控器按下某个按键时,程序检查标志位的状态并执行相应的操作(吸合或断开继电器)。然后,你可以在程序中添加一个延时函数,在一次按键操作后延迟一段时间再接收下一次按键信号,以避免重复操作。  另外,您可以尝试使用去抖动技术来解决按键信号不稳定的问题。这种技术通过软件或硬件方法来消除按键信号中的抖动,从而提高系统的稳定性。
作者: MCU_FANS    时间: 2023-3-29 10:50
之前做过跟这基本一样的433遥控产品:单键开关。程序逻辑:
开关断开状态 >> 解码433是否有有效值  >> 解码成功433 >>  闭合开关 >> 开关闭合状态 >> 检测433连续一段时间没有遥控信号(一堆无规则脉冲) >> 检测到没有遥控信号 >>  解码433是否有有效值 >> 解码成功433 >>  断开开关 >> 回到原点




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1