寒假在家练项目五——STM32F103嵌入式
项目描述 - 项目需求:
1.植入贪吃蛇游戏
2.需要用板子上的4个按键控制蛇的上下左右移动。
3.当游戏开始的时候,随着蛇的移动,蜂鸣器会响,当游戏结束的时候,蜂鸣器静止。
4.板子上的姿态传感器能够及时的将屏幕调整至最适合游戏的方向。
5.当蛇成功吃到食物时,蛇能够伸长一格。
6.当蛇咬到自己时或者撞到墙的时候,游戏结束,来到游戏开始界面。
实现的思路
1.先分析项目需求,将它们拆分称一个个小问题。
2.先在网上找到一个能够成功运行的贪吃蛇C语言代码。
3.通过直播课以及B站上的正点原子的视频学习如何使用STM32cubeMX和MDK。
4.让蜂鸣器在游戏中响,在游戏结束时安静。
5.通过不断查找MPU6050的资料。用DMP对MPU6050进行姿态解算。
6.在CSDN上找到了一个类似的用STM32F103驱动OLED,并用摇杆玩贪吃蛇和项目中提前完成大佬分享的代码的灵感下,进行不断地调整、修改,完成了本次任务。
完成的功能及达到的性能
1.给板子通上电后,会进入一个初始页面,初始页面上有:欢迎语,游戏规则介绍等。
2.进入初始页面后,随便按一个按键,我们可以进入游戏,游戏开始时,随着蛇的移动,蜂鸣器会不断发出声音。
3.游戏过程中,我们旋转板子,也可以旋转屏幕,此时游戏在刷新的过程中会暂停,刷新完成后就会立马继续游戏。
4.食物不会出现在墙上和蛇的身体上,蛇初始长度为4,每吃一个食物,蛇会伸长一格,满分是1000分,共有4个难度。随着难度的提升,蛇的速度也会越来越快,蜂鸣器响的频率也会越来越快。
5.在蛇移动的过程中,我们按与它移动方向相同和相反的的方向的按键,蛇移动的方向不会发生改变.
6.当我们游戏过程中,蛇咬到自己或撞到墙时都会结束游戏,游戏结束时屏幕会刷新,按一次按键,又能进入游戏。
7.死亡后刷新屏幕的颜色一共有20种(共设分有20段颜色显示),屏幕刷新后,会出现Cheer up!Try again!You can do it!的加油鼓励的话。然后屏幕立即刷新,来到游戏结束画面。游戏结束画面里出现的文字也是鼓励的话。
遇到的主要难题
1.在设置游戏初始页面的时候,由于对mpu6050原理不太懂,所以初始页面的文字无法跟着屏幕的旋转一起旋转,同样的游戏结束的时候也是这样。也就是说mpu6050的功能只应用在了游戏中,在游戏过程中,旋转屏幕,蛇以及食物的位置会发生相对的改变。
2.插上板子上传代码后,蛇的速度与停止板子供电后(拔掉后)蛇的速度并不一样。这个问题查了好多资料也没有解决。
3.游戏结束后,本来想加上得分显示功能的,但是让屏幕显示变量的函数我还是不懂,所以就去掉了。
未来的计划建议
总的来说,这次寒假在家练的活动让我受益匪浅。第一是对keil MDK的软件更加的熟悉了,也懂得了如何烧录。对LCD_ShowString()更加的熟悉了。之前为了加上游戏结束显示游戏得分的功能,查了好多资料,网上的都是LCD_ShowString()括号里面都是六个元素,而我的例程里的括号里有7个元素。于是我想着把LCD.c和LCD.h整个给换了,在网上的找到例程后,开始了“换血”,可是我还是太天真,没有经历过社会的毒打。最后熬到半夜2点多的时候看到编译报n个错后,顿时感觉山重水复疑无路,柳暗花明还是堵。学习的道路没有尽头,我还要接着走下去!