一种使用ESP32 LORA显示模块的简易游戏机
扫描二维码
随时随地手机看文章
这是我的个人项目,我自己编写了一些街机游戏。代码完全是从头编写的,并且是可修改的。
我一直想设计一个游戏机,因为我一直着迷于游戏机是如何将硬件、软件和图像融合在一起的。因为我有一个基于ESP32的LORA(远程)开发板,我想使用它。整个电路在5V电压下工作。控制台只使用一个按钮,可以执行多个任务。固件是可升级的,但对于我的初始项目,我添加了三个很酷的游戏,既有趣又易于编码!
项目简介
动机很简单:
•这是一个简单的游戏控制台,运行在ESP32上,内置0.96英寸OLED显示屏。
•游戏、导航和游戏都是由一个按钮完成的。
•ESP32模块上的内置显示器充当屏幕。
•led在各种动画中亮起,显示开始/赢/输等。
•蜂鸣器以不同的频率发出不同的声音。
•易于定制和固件升级。
主要游戏:
•Hamba Match:在这个游戏中,一个图像在屏幕上不断移动,要想获胜,你需要在正确的时间按下按钮,将图像嵌入到它的轮廓中。
•Hamba Run:我尝试在Chrome上重现你玩的恐龙游戏。跳起来躲避障碍物!
•数字保持游戏:在这个游戏中,在屏幕上显示一个随机数字和一个不断变化的数字。您需要在正确的时间按下,以便连续数字与随机数完全匹配。
•更多游戏:我将继续在我的GitHub上添加更多简单有趣的游戏。(连结如下)
硬件与电路
硬件方面非常简单。在这里,我使用面包板来容纳所有组件。该电路是围绕ESP32 LoRa模块构建的,它作为主控制器。ESP32完美地放在面包板上,将所有引脚留在板的两侧。
系统由来自USB的5V供电。开发板包含一个3.3V稳压器,用于灯和按钮输入。
开发板不能输出足够的电流,所以我使用通用的PNP晶体管(BC557)来切换led和蜂鸣器。led并联连接,因此它们同时闪烁。
输入按钮连接到1k上拉电阻(未按下时读取HIGH),这是避免鬼触发的好方法。
由于我们将使用中断来读取按钮输入,因此与开关连接的额外100nF电容器对于抵消脱频效应非常重要。
套管
你知道你可以数控塑料吗?JLCCNC提供多达5轴铣削工艺!而且成本很低。
代码:
我试图保持代码简单,让每个人都能理解。通过创建一些自定义库可以使代码更整洁,但现在,我将所有内容保存在main.cpp下
#重要:要使用开发板的内置OLED显示屏,需要对代码进行一些调整。在Heltec板上,OLED显示器可以打开/关闭,因此要打开它,在初始设置时将GPIO 16引脚拉到HIGH。我附上了代码的截图。
代码分为不同的部分,我在下面讨论了不同的代码块:
菜单是通过调用两个函数创建的:
drawMenu()显示名称和图标
和menuAction()执行选中的游戏
输入按钮被编码为中断,以便按钮功能在游戏的某个点上运行而没有任何延迟。
必须添加ICACHE_RAM_ATTR以避免意外复位。
Hamba比赛游戏功能:
持号游戏功能:
Hamba Run游戏功能:
“void loop()”下的代码只检查按钮的状态,玩哪个游戏,何时停止游戏,并显示菜单。
所有的注释都被添加到代码中,所以您可以随心所欲地调整代码!
上传代码
要上传代码,您可以直接复制main.cpp文件,粘贴到Arduino IDE中,安装必要的库,然后点击上传。
如果你像我一样使用Visual Studio Code (platformIO),使用下面的platformIO .ini文件上传代码没有任何问题:
从图像生成字符数组
最初,我在Illustrator上画了一些图片,并将它们导出为PNG格式。把它上传到网站上,并做了相应的调整。
截图显示了为牛角生成字符代码的过程。
不过分辨率不是很好。
结束
这样就完成了!这个游戏玩起来很有趣!对我来说就像一个烦躁的玩具。我期待着添加更多的游戏,并与大家分享。
本文编译自hackster.io





