有限状态机的嵌入式小游戏项目,挺适合拿来练练手。用的是Teensy 3.2开发板搭配SDD1306 I2C OLED屏,输入靠两个按钮加一个电位计,逻辑走的是状态机+去抖的路子,结构清晰,操作也简单。哦,图像显示这块还用了Adafruit库,效果还不错。
状态切换设计得蛮直观:从启动界面到游戏,再到结束界面,每一步都能看到实际效果。而且,按钮在不同状态下有不同的响应,比如开始时是进入游戏,游戏中是控制动作,挺有趣的。状态图
画得清楚,用来讲逻辑再合适不过了。
还有个小细节值得注意,作者加了一个170Ω外部上拉电阻到 I2C 上,目的就是为了提高信号完整性。别小看这招,用在噪声大的开发板环境下还挺实用。你如果遇到 I2C 时序不稳的情况,也可以试试。
代码实现也不复杂,大部分逻辑集中在有限状态机那一块,几个switch-case
分状态就够了。图像显示用的是Adafruit_SSD1306
库,bitmap
加载挺方便,连分数显示也做得有模有样。
,如果你想做个轻量级的状态机驱动小游戏,又不想被底层搞得太复杂,这个项目还蛮值得看一眼的。是你手上刚好有块 Teensy,配套的OLED + I2C
场景用起来更顺手。
如果你对MATLAB
和嵌入式开发感兴趣,还可以看看这几个相关资源:
如果你有类似项目或者在折腾状态机逻辑,强烈建议把这个项目跑一遍,能学不少实用招。