2025寒假练 - 基于带显示屏的RP2040与IMU重力感应迷宫游戏设计
该项目使用了RP2040开发板与IMU姿态传感器,实现了重力控制迷宫滚珠游戏的设计,它的主要功能为:通过检测设备倾斜角度控制小球在迷宫中移动,并在LCD屏幕上实时显示游戏画面。 该项目使用了MicroPython编程与迷宫地图数据结构,实现了多关卡迷宫游戏系统的设计,它的主要功能为:设计至少三关固定迷宫地图,并实现关卡切换、游戏开始、暂停以及重新开始等游戏逻辑功能。 该项目使用了LCD显示模块、按键输入与蜂鸣器,实现了游戏界面交互系统的设计,它的主要功能为:在屏幕上显示计时与得分信息,并通过蜂鸣器提示小球碰撞墙壁以及完成关卡。
标签
嵌入式系统
显示
开发板
BIT 洛娜
更新2026-09-02
北京理工大学
18

一、项目介绍

本项目基于RP2040游戏机平台,设计并实现了一款重力感应迷宫滚珠游戏系统。该系统通过IMU姿态传感器实时采集设备的倾斜角度,并将俯仰和横滚数据转换为小球在迷宫中的移动方向,实现基于物理姿态控制的游戏交互方式。用户通过倾斜设备控制小球在迷宫中移动,避开障碍并最终到达目标位置完成关卡。

 

本项目结合嵌入式系统开发与游戏设计思想,融合传感器数据处理、图形界面显示和实时控制等技术,构建了一个具有趣味性与挑战性的嵌入式应用系统。同时,系统设计了完整的游戏流程,包括启动界面、加载动画、游戏过程以及胜利提示界面,使整体体验更加完整。

 

1 系统游戏运行界面

如图1所示,系统在LCD屏幕上实时显示迷宫地图与小球位置。玩家通过倾斜设备控制小球移动,避开墙壁并向目标位置前进,实现重力感应控制效果。

 

 

二、使用到的硬件介绍

 

本项目主要使用以下硬件组成系统:

1. RP2040开发板(带LCD显示屏) 

作为系统核心控制单元,负责程序运行、数据处理以及图形界面显示。

 

2. IMU姿态传感器 

用于实时获取设备的倾斜角度(俯仰角与横滚角),实现重力感应控制。

 

3. LCD显示屏 

用于显示迷宫地图、小球位置、计时信息以及游戏界面。

 

4. 蜂鸣器(Buzzer 

用于在小球碰撞墙壁或完成关卡时提供声音反馈。

 

5. 按键模块 

用于实现游戏的开始、暂停、重新开始以及关卡切换等操作。

 

2 系统硬件实物图

如图2所示,本系统基于RP2040游戏开发板,集成LCD显示屏、按键、摇杆以及IMU传感器模块,实现游戏控制与显示功能。

 

三、方案框图和项目设计思路介绍

本系统整体结构可分为输入模块、处理模块和输出模块三个部分:

输入模块:IMU传感器与按键输入 

处理模块:RP2040主控芯片 

输出模块:LCD显示与蜂鸣器提示 

image.png

图3 系统结构框图

如图3所示,本系统由IMU姿态传感器模块与按键模块作为输入,经RP2040主控模块进行数据处理后,通过LCD显示模块与蜂鸣器模块输出,实现完整的嵌入式游戏系统功能。

 

系统工作流程如下: 

首先进行系统初始化,包括屏幕初始化、传感器初始化以及变量设置;随后进入启动界面(Start),通过按键进入加载界面(Loading);加载完成后进入游戏主循环。在主循环中,系统持续读取IMU传感器数据,并根据倾斜角度计算小球的移动方向与速度,同时进行碰撞检测与边界判断;最终将结果实时显示在LCD屏幕上。

设计重点在于将IMU数据映射为二维平面运动控制,同时保证小球移动的稳定性与灵敏度。此外,通过多关卡设计提升游戏的可玩性,并通过界面设计增强用户体验。

 

四、软件流程图和关键代码介绍

image.png

图4 软件流程图

如图4所示,系统通过循环读取IMU数据并更新游戏状态,实现实时控制与界面刷新,当检测到通关条件后进入胜利界面。


本项目软件部分采用MicroPython进行开发,主要包括以下模块:

1. 主程序循环 

通过循环结构不断执行数据采集、状态更新与界面刷新,实现实时控制。

2. IMU数据处理 

通过读取IMU传感器数据,获取设备倾斜角度,并进行简单滤波处理,减少抖动影响。

3. 小球运动控制 

根据倾斜角度计算速度分量,实现小球在水平与垂直方向的移动。

4. 碰撞检测 

通过判断小球位置与迷宫墙壁的关系,实现碰撞反馈,防止穿墙。

5. 界面显示 

包括文字显示函数、居中显示函数以及图形绘制函数,实现游戏界面的动态更新。

关键代码逻辑如下(示意):

imu.read()
ax = imu.ax
ay = imu.ay

# 根据倾斜控制小球移动
if ax > 0.2:
ball_x += 1
elif ax < -0.2:
ball_x -= 1

if ay > 0.2:
ball_y += 1
elif ay < -0.2:
ball_y -= 1

# 碰撞检测
if maze[ball_y][ball_x] == 1:
ball_x = prev_x
ball_y = prev_y

# 更新显示
draw_ball(ball_x, ball_y)
lcd.show()

 

五、功能展示图及说明

本系统实现了完整的游戏功能,包括:

1. 启动界面(Start 

系统启动后显示开始界面,提示用户进入游戏。

5 游戏开始界面

如图3所示,系统启动后显示开始界面,提示用户按键进入游戏。该界面设计简洁明了,提升用户操作体验。

2. 加载动画(Loading 

通过进度条形式展示加载过程,提高交互体验。

6 系统加载界面

如图4所示,系统在进入游戏前显示加载界面,通过进度条展示初始化过程,使用户体验更加流畅。

3. 游戏运行与结果界面

显示迷宫地图、小球位置以及游戏运行状态。

图7 游戏胜利界面

如图5所示,当玩家成功完成迷宫挑战后,系统显示胜利界面,并记录当前得分。该功能增强了游戏的反馈效果与成就感。

 

4. 多关卡设计 

系统包含至少三关迷宫,难度逐渐增加。

5. 计时与计分功能 

根据完成时间与碰撞次数进行评分,并实时显示。

6. 声音提示 

在碰撞或通关时通过蜂鸣器发出提示音。

7. 胜利界面(Winner 

完成所有关卡后显示胜利提示,并增强视觉效果。

8 游戏结束界面

如图8所示,当游戏结束时,系统显示结束界面提示当前状态,使玩家能够清晰了解游戏结果。

 

六、项目中遇到的难题和解决方法

1. IMU数据不稳定 

由于传感器存在噪声,导致小球抖动。通过简单滤波算法进行平滑处理,提高稳定性。

2. 小球移动控制不灵敏 

通过调整比例系数,使移动更加平滑且符合操作习惯。

3. 碰撞检测困难 

通过增加边界判断与位置限制,避免小球穿越墙壁。

4. 屏幕刷新闪烁 

优化绘制逻辑,减少重复刷新,提高显示效果。

5. 文本显示不居中 

编写居中显示函数,实现界面优化。

 

七、对本次活动的心得体会

通过本次项目的设计与实现,我加深了对RP2040嵌入式开发平台的理解,并掌握了IMU姿态传感器的数据采集与应用方法。在项目开发过程中,我不仅提升了编程能力,还增强了对系统整体设计与调试的认识。

此外,本项目让我认识到嵌入式系统开发不仅仅是功能实现,更包括用户体验设计、界面优化以及系统稳定性等多个方面。通过不断调试与优化,我逐步完善了系统功能,并成功实现了预期目标。未来可以在本项目基础上进一步拓展,例如增加更多关卡设计、优化物理运动模型以及提升图形界面效果,使系统更加完善与丰富。

附件下载
MazeGame.zip
2025寒假练报告_洛娜.docx
团队介绍
本项目由本人独立完成。主要负责程序设计、游戏逻辑实现以及系统调试。项目基于 RP2040 游戏机平台,利用 IMU 姿态传感器实现重力控制,并通过 LCD 实时显示迷宫与小球运动,实现多关卡迷宫、计时计分以及按键控制等功能。
团队成员
BIT 洛娜
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号