作者:Saddam
翻译:Tony
原文地址:https://circuitdigest.com/microcontroller-projects/arduino-snake-game-using-8x8-led-matrix
自从手机问世以来,贪吃蛇游戏就非常受欢迎。最初它是从黑白屏手机上而来,很快就变得非常有名。随着手机的发展,该游戏也发生了很大的变化,现在也可在彩屏版本上使用。
贪吃蛇游戏也已成为电子爱好者和学生非常流行的DIY项目。今天我们将演示Arduino贪吃蛇的基本功能,同时使其保持简单。
使用组件
Arduino UNO
8x8LED点阵屏
移位寄存器74HC595
LCD1602
1K电位器
按键开关
连接线
面包板
电源
操作说明
贪吃蛇游戏实现起来稍微复杂,但在本教程中,我们帮你对其做了简化。为了完成这个项目,我们使用了8x8红色点阵来显示蛇及其食物,使用LCD602显示得分,使用五个按键控制方向和开始游戏,最后通过一块Arduino UNO来控制整个流程。如下给出8x8点阵的引脚图以及制作好的硬件:
当上电后,首先在液晶屏上显示欢迎消息,然后显示"Press Start To Play"提示。然后LCD将分数显示为零,点阵上显示两个点表示蛇,一个点表示食物。
现在,用户需要按下中间按键开始游戏,并且默认情况下,蛇开始向上移动。然后,用户需要通过按中间按键周围的“方向键”来控制蛇的方向。在这里,我们使用了五个按键,即向左键,向右键,向上键,向下键和开始键。每当蛇到达食物点吃东西时,分数每次增加5,蛇的长度每次增加1个点,蛇的速度也比以前快。每当蛇撞到任何墙壁或到达LED矩阵的边界时游戏结束。然后,用户需要按开始键再次开始游戏。
电路说明
贪吃蛇电路并不复杂。在这里,我们通过使用移位寄存器74HC595连接点阵屏。使用两个移位寄存器,一个用于驱动列,另一个用于驱动行。列移位寄存器和行移位寄存器[SH,ST]这两个寄存器的控制引脚,分别连接到Arduino的14和16引脚。列移位寄存器和行移位寄存器的DS引脚连接到Arduino的15和17引脚。用于开始游戏的开始按键连接在3号引脚上,左方向按钮插在4号引脚上,右方向按钮插在6号引脚上,上方向按钮在引脚2上,下方向按钮插在引脚5上。LCD1602的RS和EN引脚连接到Arduino的13和12。RW引脚接地。数据引脚d4-d7连接到Arduino的11、10、9、8引脚。其余连接参照如下电路图。
编程说明
要编写Arduino贪吃蛇游戏代码,首先包含LCD库头文件并定义LCD引脚,然后是方向按键和移位寄存器的相关引脚。
#include<LiquidCrystal.h>
LiquidCrystal lcd(13,12,11,10,9,8);
#define ds_col 15
#define sh_col 16
#define st_col 14
#define ds_row 17
#define start 3
#define up 2
#define down 5
#define left 4
#define right 6
然后,我们初始化程序中使用到的功能。在setup函数中,我们初始化LCD,设置IO口方向,上拉相关位并在LCD上显示欢迎消息。
void setup()
{
lcd.begin(16,2);
pinMode(ds_col, OUTPUT);
pinMode(sh_col, OUTPUT);
pinMode(st_col, OUTPUT);
pinMode(ds_row, OUTPUT);
pinMode(start, INPUT);
... ....
.... ....
然后在loop函数中开始游戏。
void show_snake(int temp)
{
for(int n=0;n<temp;n++)
{
int r,c;
for(int k=0;k<21;k++)
{
... ....
.... ....
在这里我们使用如下函数从按键读取方向。
void read_button()
{
if(!digitalRead(left))
{
move_r=0;
move_c!=-1 ? move_c=-1 : move_c=1;
while(!digitalRead(left));
... ....
.... ....
完整的贪吃蛇代码:
Arduino点阵屏贪吃蛇完整代码:
百度云链接:https://pan.baidu.com/s/117xzixC4Qh_OqZN-2mpQtA
密码:cju9