当前位置:首页 > 单片机 > 单片机
[导读]已经是很久没有写文章了,因为没有时间,人家都说大四不考研,天天像过年,可我依旧没能有那份闲暇的时间。现在几乎人人的手里都是一款安卓智能机这是我非常羡慕的,而我手里只有上学期用380元买的一台二手诺基亚N96

已经是很久没有写文章了,因为没有时间,人家都说大四不考研,天天像过年,可我依旧没能有那份闲暇的时间。

现在几乎人人的手里都是一款安卓智能机这是我非常羡慕的,而我手里只有上学期用380元买的一台二手诺基亚N96,虽然也称得上智能机但是远远没有如今安卓智能的优秀,其中一个功能就是通过重力感应玩赛车游戏,我想这个大家都不陌生,只要把手机歪一歪斜一斜就可以控制赛车方向了,这个功能令桥哥好生羡慕嫉妒恨,可惜自己的手机不能玩,上周突来灵感何不自己做一个玩玩。正好上学期开始着手给侄子做的四轴飞行器的基板基本调试完成,核心的芯片就是一块M3微控器,一块三轴加速度传感器ADXL345,一块三轴数字陀螺仪。而要做一个简单的重力感应遥控器用M3结合ADXL345就可以实现了。实际上由于之前调试把芯片的控制函数都写好了,而且上位机的程序又有之前给学长做毕设的时候写的程序的基础,所以花的时间很少也就两个下午的时间。

要实现一个控制电脑游戏的重力感应遥控器原理也非常简单,无非就是判断此时遥控器倾斜角度,然后M3将指令迅速传给电脑,电脑根据指令给出跟敲击键盘方向键一样的指令就完事了。检测倾斜角度由ADXL345实现,三轴加速度传感器能够测出静态时xyz方向的加速度,如果平放的情况下,只在z轴有一个向下的重力加速度,如果倾斜,那么重力将可以分解到xy方向,这样产生了xy方向的加速度,从而可以测得遥控器向哪边倾斜了。

接下来,M3通过IIC总线方式读取ADXL345测得的X轴的加速度数据,只要通过判断X轴方向的数据就可以判断基板往哪个方向倾斜了。下面是M3的测量代码

M3判断出倾斜方向之后立即通过57600波特率的串口向电脑上位机发送指令,为了提高遥控器灵敏度和反映速度,我这里指令只用了一个字符,L代表左,R代表右,并且不使用校验,也不需要上位机回应M3,M3只管往上位机不断发指令就可以了,可以大大提高效率,实际测试中,这种波特率情况下即保证了传输速率,误码率也是较低的。

接下来上位机接收到方向指令后就得通过代码来模拟我们平时敲击键盘的动作,程序也是非常简单。跟我以前做的无线鼠标的实现代码非常的类似。

通过这段代码可以发现,除了左键右键的指令外,还有一个名为’X’的空白指令,代表的是当遥控器水平放置的时候释放按键。

VC写的上位机界面如下所示

看起来比较的粗糙,外观上我就不做什么修饰了,毕竟做的是电子而不是软件开发,只要能够实现我需要的功能,软件难看一点就将就吧。中间的四个方向按键作用是为了满足有些游戏是需要一直按下某个按键玩的,比如极品飞车你就得一直按着方向键才能走吧呵呵,当然就目前来讲我只判断了ADXL345的X轴数据,如果联合Y轴数据来判断,就可以同时控制上下左右四个方向了,这点我就先不再做,因为最近还是忙。最右边的调试数窗口用来做开发的时候监测串口数据用的,也可以用于系统的后续开发的调试使用。

实测状况,因为这块小板原先的设计是微型四轴所以用的是电池供电,还是非常方便的,这块电池也是非常给力,就冲了一次电,我都拿它调试过很长的时间了,依旧有电。板载电源芯片用的是TI的一款超低压降的3.3V稳压芯片,电池原本电压标称是3.7V,实测充电完成有4.2V左右。

遥控器通过串口跟电脑连接以后,打开软件然后打开串口,然后把软件最小化之后就可以使用了,已经过了一把重力感应玩赛车的隐。

我现在还用的是有线串口实现通信,如果是无线的遥控器那将会更加完美,实际上我的板子上设计有2.4G无线通信模块接口,但是向无线模块写入发送数据,然后另一方还得有接收然后再通过串口传给电脑,这中间就额外增加了一段时间,或许会给遥控器的灵敏度带来下降,当然我还没有实测过,这是后续开发的事,我已经没有太多的时间放在此处,接下来我的重心将放在四轴飞行器上边,或许最好的结果是在今年过年可以让小侄看到能够飞起来的四轴,当然很可能也是他什么都看不到,我只能尽力了况且还有好多任务做真心忙。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

近日,东芝宣布推出新品——“M3H族”微控制器,该产品基于全球标准的Arm Cortex-M3内核,专为电机控制而设计,可满足消费设备和工业设备的各种需求。新产品的出现扩大了 “TXZ?系列”微控制器的产品阵容。

关键字: ARM cortex-m3 内核 微控制器 电源新品

已经是很久没有写文章了,因为没有时间,人家都说大四不考研,天天像过年,可我依旧没能有那份闲暇的时间。现在几乎人人的手里都是一款安卓智能机这是我非常羡慕的,而我手

关键字: adxl345 cortex-m3 单片机 电源技术解析 重力感应

1. 摘要 Cortex-M内核实现了一个高效异常处理模块,可以捕获非法内存访问和数个程序错误条件。本应用笔记从程序员角度描述Cortex-M Fault异常,并且讲述在软件开发周期中的Fault用法。 2. 简介...

关键字: cortex-m3 cortex-m4 fault异常

1.1 启动代码内容1) 硬件初始化:最起码的是要初始化堆栈指针。2) C语言环境 :在main函数调用之前要完成对一些变量的初始化。3) 应用初始化: 这主要取决于你的应用。比如设置系统的晶振、时钟。1.2 图解M3启...

关键字: cortex-m3 启动代码

有時候切換了編譯方式如從ARMCC轉變為GCC編譯器,編譯下載時會出現Error:FlashDownloadfailed:-"Cortex-M3"這個錯誤。目前,自己測試解決的方式是:刪除相同目錄下的...

关键字: cortex-m3 error keil

在项目处于调试期间,Fault处理程序可能只是一个断点指令,调试器遇到这个指令后停止程序的运行。默认情况下,由于非硬Fault被禁能,所有发生的非Fault都会上访成硬Fault,因此只要在硬Fault处理程序中设...

关键字: cortex-m3 cortex-m4 fault fault处理函数

1 Cortex-M3/4的Fault简介 Cortex-M3/4的Fault异常是由于非法的存储器访问(比如访问0地址、写只读存储位置等)和非法的程序行为(比如除以0等)等造成的。常见的4种异常及产生异常的情况如...

关键字: 4 cortex-m3 调试方法 hard fault

在编译下面一段代码时:STACK_TOPEQU0x20002000AREAReset,CODE,READONLYDCD0x20002000DCDStartENTRY;CODE16Startldrr2,=TestLDRD...

关键字: cortex-m3 keil编译 纯汇编 align地址

STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两...

关键字: cortex-m3 STM32 中断优先级

TM32笔记之八:来跟PC打个招呼,基本串口通讯a) 目的:在基础实验成功的基础上,对串口的调试方法进行实践。硬件代码顺利完成之后,对日后调试需要用到的printf重定义进行调试,固定在自己的库函数中。b) 初始化函数

关键字: cortex-m3 usb的
关闭
关闭