OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4052|回复: 27

红外遥控实验

[复制链接]

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
发表于 2018-8-27 10:47:37 | 显示全部楼层 |阅读模式
1金钱


我在 原子基础上用红外遥控实验去让LED翻转,但是按遥控有时候led会闪一次,并没有达到翻转的效果,请问是什么原因?谢谢各位大神指教了啊啊、、、、

1535338017(1).jpg

最佳答案

查看完整内容[请看2#楼]

如果是音量+ 长按。。。 那你就按照你原来的处理方式呗。。。。 因为LED只有2个状态,可能长按翻转多次后状态不变 可是音量你长按它就一直+上去啊,按照你原来的方法就行了。 定时器的初始化我就不贴出来了。 我是用stm32cubemx生成的工程,直接拿来实验的
穷不可怕,可怕的是穷的是我~~~
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2018-8-27 10:47:38 | 显示全部楼层
如果是音量+      长按。。。
那你就按照你原来的处理方式呗。。。。

因为LED只有2个状态,可能长按翻转多次后状态不变
可是音量你长按它就一直+上去啊,按照你原来的方法就行了。

定时器的初始化我就不贴出来了。
我是用stm32cubemx生成的工程,直接拿来实验的

NEC.rar

2.1 KB, 下载次数: 46

回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-27 10:48:23 | 显示全部楼层
如果稍微按得比较久的话,是可以达到Led的翻转。
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17786
金钱
17786
注册时间
2018-3-3
在线时间
523 小时
发表于 2018-8-27 11:25:58 | 显示全部楼层
45行  delay_init(20);这个不对吧
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-27 11:29:00 | 显示全部楼层
Psheng 发表于 2018-8-27 11:25
45行  delay_init(20);这个不对吧

  我不大清楚,这个delay做什me用的,需要delay多久呢。。谢了
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17786
金钱
17786
注册时间
2018-3-3
在线时间
523 小时
发表于 2018-8-27 11:33:23 | 显示全部楼层
烈日灼心 发表于 2018-8-27 11:29
我不大清楚,这个delay做什me用的,需要delay多久呢。。谢了

你要延时 不是应该用delay_ms();这个函数吗,你一直初始化延时。。。。
/*
*
*
*
*
*
*/
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-27 11:38:09 | 显示全部楼层
Psheng 发表于 2018-8-27 11:33
你要延时 不是应该用delay_ms();这个函数吗,你一直初始化延时。。。。

  不要延迟了,这里没什么用,但是我遥控按的话,要大概按到0.5S才功能正常啊,按得快点的话,就只是闪一下又亮了。。  指教讨论下 TKS
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17786
金钱
17786
注册时间
2018-3-3
在线时间
523 小时
发表于 2018-8-27 11:41:06 | 显示全部楼层
烈日灼心 发表于 2018-8-27 11:38
不要延迟了,这里没什么用,但是我遥控按的话,要大概按到0.5S才功能正常啊,按得快点的话,就只是闪一 ...

大概是没有消抖 ,太快了吧, 加个50ms的延时看下
/*
*
*
*
*
*
*/
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2018-8-27 12:00:22 | 显示全部楼层
我也觉得是消抖问题,

人的手指按一下,一般都是几百个MS的时间。

遥控在你按住不放的情况下,会有一个重复码的发送问题。

可能你LED再这种情况下TOGGLE了2次,那么LED的状态就恢复原状了
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-27 13:47:21 | 显示全部楼层
Psheng 发表于 2018-8-27 11:41
大概是没有消抖 ,太快了吧, 加个50ms的延时看下

不行啊,应该加在哪里?
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-27 13:47:51 | 显示全部楼层
a3748622 发表于 2018-8-27 12:00
我也觉得是消抖问题,

人的手指按一下,一般都是几百个MS的时间。

  我不太明白,消抖的话 放在哪里消抖
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-27 13:50:34 | 显示全部楼层
烈日灼心 发表于 2018-8-27 13:47
我不太明白,消抖的话 放在哪里消抖

但是我按得久点,就是好的
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

9

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2018-4-6
在线时间
31 小时
发表于 2018-8-27 14:12:27 | 显示全部楼层
同8楼,我也觉得应该是消抖和延时的问题
然后连续调用翻转函数,人眼可能就看不到现象了,
(消抖和延时都在你红外引脚的扫描里)
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-27 14:21:22 | 显示全部楼层
15353920254 发表于 2018-8-27 14:12
同8楼,我也觉得应该是消抖和延时的问题
然后连续调用翻转函数,人眼可能就看不到现象了,
(消抖和延时 ...

但是我认为 应该在捕获上升沿和下降沿的时候消抖, 在捕获中断里加去抖动吗?还是另有高见。
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

9

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2018-4-6
在线时间
31 小时
发表于 2018-8-27 16:28:39 | 显示全部楼层
烈日灼心 发表于 2018-8-27 14:21
但是我认为 应该在捕获上升沿和下降沿的时候消抖, 在捕获中断里加去抖动吗?还是另有高见。

32的红外还用的输入捕获,,,头大,我还有几课才能学到

我说的那个,是有可能,while里一段时间内一直扫描到0x30,我建议,你在switch外面加点延时,看看情况,红外的视频还没看,仅供参考
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-27 17:56:43 | 显示全部楼层
15353920254 发表于 2018-8-27 16:28
32的红外还用的输入捕获,,,头大,我还有几课才能学到

我说的那个,是有可能,while里一段时间内一 ...

唉。,,罪过呀。。
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-27 18:00:29 | 显示全部楼层
代码送上 请路过大神指点!Thank you much!



IR_Decode.zip

1.55 MB, 下载次数: 43

穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-27 18:09:25 | 显示全部楼层
烈日灼心 发表于 2018-8-27 18:00
代码送上 请路过大神指点!Thank you much!

可以自己在数组里改掉地址码,测试正点原子H743板子,请帮忙留意谢谢
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2018-8-27 21:24:31 | 显示全部楼层
触发TOGGLE后,你需要一个检测按键是否松开的功能

如果按键松开,才能再次触发TOGGLE。

这样就不会多次触发了。
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-28 09:12:07 | 显示全部楼层
a3748622 发表于 2018-8-27 21:24
触发TOGGLE后,你需要一个检测按键是否松开的功能

如果按键松开,才能再次触发TOGGLE。

说得对呢,能不能判断定时器中断是否触发,,,
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2018-8-28 09:49:09 | 显示全部楼层
烈日灼心 发表于 2018-8-28 09:12
说得对呢,能不能判断定时器中断是否触发,,,

可以的,但我想到的是判断是否触发中断,然后一段时间内没触发就代表松开了

这个方法有个问题就是,按键不松开LED不TOGGLE

我想到的另一个方法是,同时检测同步码计数。

比方说,检测到0x30,同时同步码计数为0,触发TOGGL
如果0x30,且同步码不为0,不TOGGLE

除非是手抖了,松开立刻重按,不然的话应该可以起到消抖作用
你可以尝试一下
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-28 14:04:58 | 显示全部楼层
a3748622 发表于 2018-8-28 09:49
可以的,但我想到的是判断是否触发中断,然后一段时间内没触发就代表松开了

这个方法有个问题就是,按 ...

  是有点心烦, 我看了一下Log,

我们按下会打印很多的地址码, 但是NEC不是按下不放的话,后面都是重复码啊,
为什么我打印了很多的地址码。

我这里是做LED的开关,
如果单独做开关的话,就没有这个问题
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-28 14:06:48 | 显示全部楼层
烈日灼心 发表于 2018-8-28 14:04
是有点心烦, 我看了一下Log,

我们按下会打印很多的地址码, 但是NEC不是按下不放的话,后面都是 ...



不应该是打印1个吗? 后面的都是重复码。
1535436357(1).jpg
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2018-8-28 14:20:12 | 显示全部楼层
烈日灼心 发表于 2018-8-28 14:06
不应该是打印1个吗? 后面的都是重复码。

是的  NEC的格式是出现一次按键码跟地址  然后按住不放的话都是重复码

我不知道原子程序如何处理,我的NEC接收程序是自己写的。

会在第一次按键记录按键码跟地址,然后对重复码个数进行计数。

除非再次触发按键,否则数据不清零。


回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2018-8-28 14:26:00 | 显示全部楼层
烈日灼心 发表于 2018-8-28 14:06
不应该是打印1个吗? 后面的都是重复码。

实在不行的话,你尝试TOGGLE 了 LED后同时把按键码清零。

如果你的程序,按一次按键只会刷新一次按键码

那么按键码TOGGLE后就会一直是0,也就不用消抖了
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-28 14:37:49 | 显示全部楼层
a3748622 发表于 2018-8-28 14:26
实在不行的话,你尝试TOGGLE 了 LED后同时把按键码清零。

如果你的程序,按一次按键只会刷新一次按键 ...

  但是如果我长按的话, 比如音量加呢,又不能实现了、、
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-28 14:39:19 | 显示全部楼层
a3748622 发表于 2018-8-28 14:20
是的  NEC的格式是出现一次按键码跟地址  然后按住不放的话都是重复码

我不知道原子程序如何处理,我 ...

方便看看你这一块的代码么?
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2018-8-28 18:00:28 | 显示全部楼层
a3748622 发表于 2018-8-28 17:56
如果是音量+      长按。。。
那你就按照你原来的处理方式呗。。。。

膜拜啊 我先下了看看参照一下,真是罪过奥奥
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-11 03:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表