OpenEdv-开源电子网

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

Mini板写的一个红外遥控器控制的俄罗斯方块

[复制链接]

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2014-5-26
在线时间
25 小时
发表于 2015-2-4 22:16:27 | 显示全部楼层 |阅读模式
这几天边学边写的一个俄罗斯方块的游戏,有兴趣的朋友可以下载下来跑下看看,感觉还是不错的....有一个问题就是红外遥控器控制方块移动、翻转的时候,按一下按键方块总是动两次,偶然也会正常的动一下,希望看过程序的朋友能够告知在下。

Tetris.zip

2.36 MB, 下载次数: 1324

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-2-5 07:49:16 | 显示全部楼层
不错,谢谢分享!!!


红外解码那里,判断一下单击和连按就可以了吧,连按计数,到一定次数才认为是连按
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

86

主题

984

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1850
金钱
1850
注册时间
2013-4-15
在线时间
163 小时
发表于 2015-2-5 09:10:23 | 显示全部楼层
回复【2楼】八度空间:
---------------------------------
Good idea!
合肥-文盲
回复 支持 反对

使用道具 举报

70

主题

6769

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13197
金钱
13197
注册时间
2012-11-26
在线时间
3820 小时
发表于 2015-2-5 09:21:53 | 显示全部楼层
感谢分享   娱乐应用
学无止境
回复 支持 反对

使用道具 举报

2

主题

102

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2014-12-21
在线时间
0 小时
发表于 2015-2-5 12:14:43 | 显示全部楼层
把红外驱动改为综合实验里的那个,主函数中的while函数这样改一下就可以了:
[mw_shl_code=c,true]while(1) { KeyVal=Remote_Scan(); if(KeyVal&&RmtCnt) { switch(KeyVal) { case LEFT:MoveLeft();LED1=~LED1;break; case RIGHT:MoveRight();LED1=~LED1;break; case DOWNownFast();LED1=~LED1;break; case TURN:Transform();LED1=~LED1;break; case RESET:ResetGame();LED1=~LED1;break; default :break; } } delay_ms(200); LED0=~LED0; } [/mw_shl_code]

楼主可以尝试一下用触摸屏。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-5 23:01:13 | 显示全部楼层
谢谢分享....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2015-2-6 09:45:49 | 显示全部楼层
强烈要求 原子哥 把这个帖子设置成酷贴。^_^
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

8

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-5-5
在线时间
0 小时
发表于 2015-2-6 11:13:20 | 显示全部楼层
略牛逼  感谢分享
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2014-5-26
在线时间
25 小时
 楼主| 发表于 2015-2-6 23:28:13 | 显示全部楼层
回复【7楼】fanghuiopenedv:
---------------------------------
 嘘...我这只是抛砖引玉而已,如果对你有所帮助就好了,置成“酷贴”就不敢当了哈。毕竟程序上还是有很多地方需要加以完善的,比如说弄个登录界面啊,多种游戏可选啊,保存玩家信息弄个排行榜什么的。目前还在各种尝试当中,如果做出好的效果会继续跟大家分享
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2014-5-26
在线时间
25 小时
 楼主| 发表于 2015-2-6 23:28:53 | 显示全部楼层
回复【8楼】cha1992:
---------------------------------
谢谢顶贴哈
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2014-5-26
在线时间
25 小时
 楼主| 发表于 2015-2-6 23:29:46 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
嘿嘿,我从原子哥还有各位网友那里也学到很多的
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2014-5-26
在线时间
25 小时
 楼主| 发表于 2015-2-6 23:33:41 | 显示全部楼层
回复【5楼】exv:
---------------------------------
嗯,这个方法试过了,效果还可以,不过就是感觉按键后反应有点迟钝...从我理解在main函数while循环中执行一次KeyVal判断后会有一个200ms的延时,按道理不应该会出现连续两次KeyVal判断啊,就算有也是200+ms以后的事了....不明所以啊
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2014-5-26
在线时间
25 小时
 楼主| 发表于 2015-2-6 23:35:29 | 显示全部楼层
回复【2楼】八度空间:
---------------------------------
我觉得问题不是在这,我再查查,谢谢你的建议
回复 支持 反对

使用道具 举报

2

主题

102

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2014-12-21
在线时间
0 小时
发表于 2015-2-6 23:49:57 | 显示全部楼层
回复【12楼】lianclei:
--------------------------------- 
这么改只是屏蔽故障而已。
按键迟钝的话,可考虑200+ms减少些。

之前觉得是驱动出的问题,换了原版红外驱动也是这样子。

出现异常时又难于找出问题根源,可采取屏蔽故障的方案临时解决。
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2014-5-26
在线时间
25 小时
 楼主| 发表于 2015-2-6 23:56:55 | 显示全部楼层
回复【14楼】exv:
---------------------------------
嗯嗯,减少延时时间是可以解决迟钝问题。屏蔽故障也只是临时解决问题,还是希望能从根本上解决这个问题,问题看起来不大,深究下去也许会有大收获吧
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2014-4-18
在线时间
10 小时
发表于 2015-2-28 09:58:17 | 显示全部楼层
下载试了一下,屏幕显示正常,但遥控不起作用,不知怎么回事。
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2014-5-26
在线时间
25 小时
 楼主| 发表于 2015-3-13 22:48:38 | 显示全部楼层
回复【16楼】wenzhong77:
---------------------------------
我自己使用的时候是正常的,你可以看下跟红外相关的几个文件
回复 支持 反对

使用道具 举报

3

主题

41

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
224
金钱
224
注册时间
2014-9-2
在线时间
0 小时
发表于 2015-3-29 18:41:54 | 显示全部楼层
确实是个很好的程序,感谢楼主无私的分享
趁着年轻,追逐自己所爱的----单片机&&足球!
回复 支持 反对

使用道具 举报

3

主题

41

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
224
金钱
224
注册时间
2014-9-2
在线时间
0 小时
发表于 2015-3-29 18:43:19 | 显示全部楼层
回复【17楼】lianclei:
---------------------------------
楼主,你解决了按键调整方向的问题了吗?
趁着年轻,追逐自己所爱的----单片机&&足球!
回复 支持 反对

使用道具 举报

2

主题

102

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2014-12-21
在线时间
0 小时
发表于 2015-3-29 19:16:25 | 显示全部楼层
回复【19楼】非洲小男孩:
---------------------------------
如果只是为了看看游戏的效果参考我4楼的给的方案。
这是一个屏蔽错误的方法。
个人觉得某处加个volatile可能从根本上解决这个问题,你可以试试。
回复 支持 反对

使用道具 举报

3

主题

41

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
224
金钱
224
注册时间
2014-9-2
在线时间
0 小时
发表于 2015-3-30 18:17:03 | 显示全部楼层
回复【20楼】exv:
---------------------------------
谢了
趁着年轻,追逐自己所爱的----单片机&&足球!
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2014-5-26
在线时间
25 小时
 楼主| 发表于 2015-4-5 21:53:52 | 显示全部楼层
回复【21楼】非洲小男孩:
---------------------------------
如19楼说的,把红外按键接收函数里的sta变量前面加个volatile就OK了...
回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-1-10 13:24:15 | 显示全部楼层
按键动两次应该是红外接收引起的,在每次处理红外数据后对红外接收清一次0实测可避免
[mw_shl_code=c,true]switch(KeyVal)
        {
    case LEFT:MoveLeft();LED1=~LED1;break;
    case RIGHT:MoveRight();LED1=~LED1;break;
    case DOWNownFast();LED1=~LED1;break;
    case TURN:Transform();LED1=~LED1;break;
    case RESET:ResetGame();LED1=~LED1;break;       
    default :        break;
        }
        if((KeyVal != DOWN) && (KeyVal != 0))
        {
    RmtSta=0;             //源程序小bug修复,避免非加速下落模式一次按键多次触发操作       
        }[/mw_shl_code]

谢谢分享~~~~~
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
48
金钱
48
注册时间
2014-10-4
在线时间
10 小时
发表于 2016-3-2 16:25:00 | 显示全部楼层
龙之谷 发表于 2016-1-10 13:24
按键动两次应该是红外接收引起的,在每次处理红外数据后对红外接收清一次0实测可避免
[mw_shl_code=c,true ...

请问RmtSta是什么?
回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-3-3 08:59:54 | 显示全部楼层

可以到程序去查变量定义,红外接收变量
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-3-3 09:00:00 | 显示全部楼层

可以到程序去查变量定义,红外接收变量
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-3-3 09:00:04 | 显示全部楼层

可以到程序去查变量定义,红外接收变量
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-5-18
在线时间
12 小时
发表于 2016-5-27 00:35:52 | 显示全部楼层
为什么用mdk编译之后 下不了
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-5-18
在线时间
12 小时
发表于 2016-5-27 00:36:03 | 显示全部楼层
烧不进去
回复 支持 反对

使用道具 举报

17

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2016-6-13
在线时间
65 小时
发表于 2016-11-24 09:23:14 | 显示全部楼层
谢谢!
回复 支持 反对

使用道具 举报

17

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2016-6-13
在线时间
65 小时
发表于 2016-11-24 09:28:30 | 显示全部楼层
怎么我编译后有8个错误
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-21 10:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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