Download presentation
Presentation is loading. Please wait.
1
姚文婕 基于Arduino的贪吃蛇游戏
2
Arduino 程序控制单片机 电脑数据线 主控板(储存程序)
3
贪吃蛇 蛇 点阵显示当前状态 自律运动 动作控制
4
点阵显示模块 Signal[2][16] 利用视觉残留效应,循环点亮32排 每排8盏灯。根据每帧停留时间的 需要,设置循环次数。
由四个线脚的电位高低每次控制8 盏LED灯的亮灭,输入信号是一个8 位二进制数。 getSignal函数 将直观的16*16矩 阵转化为所需的2*16矩阵。得到显 示需要的signal信息矩阵。 (𝟎𝟏𝟎𝟏𝟎𝟏𝟎𝟏) 𝟐 =𝟖𝟓 Signal[2][16]
5
输入使用signal矩阵 32拍灯轮流点亮 void show(){}
使点阵显示当前矩阵//改编自点阵控制范例使用了 Arduino内置库函数SPI.h 输入使用signal矩阵 32拍灯轮流点亮 将signal矩阵转化为线脚信号 到这里位置,我们已经完成了显示模块的编写,接下来的一切都可以直接基于16*16矩阵进行编写 在SPI.h中定义的量 线脚写入(输出)
6
贪吃蛇 蛇 点阵显示当前状态 自律运动 动作控制
7
蛇的数据结构 food[2] direct head[2] tail[2] ahead[2] length speed
8
贪吃蛇 蛇 点阵显示当前状态 自律运动 动作控制
9
蛇的自律运动设置 更新food[2] 更新ahead[2] 更新head[2]\tail[2]\length\snack[][]\speed
10
贪吃蛇 蛇 点阵显示当前状态 自律运动 动作控制
11
蛇的动作控制(按钮版) 黑色表示按下按钮的时间 黑色表示程序检查按键的时间 动作控制的内容: direct =1,2,3,4(上下左右)
tag=0(运动:开始/继续),1(停止:暂停/结束) 黑色表示按下按钮的时间 黑色表示程序检查按键的时间
12
蛇的动作控制(遥控器版) 红外指令有效时间 运行矩阵显示的时间 等待红外指令的时间 这导致有些命令是接收不到的,严重影响游戏的体验!!!
13
标记8种不同的指令 记录上次接收到的指令,可以随时调用
14
用3个线脚的电位记录命令 open(重置):000和001 play(暂停/继续):010和011 上下左右:100,101,110,111
为了保证每个open命令只被执行一次,需要记录这个 命令(如:000),下次检查之后若发现仍是000,则 不运行open,若为001,则再次运行open。 000和001由遥控器的同一个键控制,按一下为000,下 次再按变为001,再按变为000.
15
主要工作内容 1.实现了点阵对任意16*16矩阵的显示 2.设计了蛇的数据结构,使得每步之需要改变2~3盏灯
3.通过两块并行主板解决了红外遥控器信号遗失的问题 4.实现了告示牌的滚动显示和闪烁显示
16
问题与改进 实验中遇到了主板内存不足的问题,导致没有多余的空 间存储一个较大的gameover()函数,从而无法显示分数。
程序内置speed和score内容,可以继续改进,使得这些 参数在硬件中得以显示。 点阵有未消除的余晖
17
谢谢观看,欢迎提问!
Similar presentations