Jogo de cobra usando Arduino

Este é um jogo de cobra simples voltado para crianças e amadores. Este jogo é feito usando Arduino.

Neste jogo de cobra Matriz de pontos display é usado para exibir cobra e comida. E para pontuação e status do jogo, como Game Start e Game Over, são exibidos em LCD 16×2. Para controlar o jogo são usados ​​cinco botões (Iniciar, Cima, Baixo, Esquerda e Direita). Para dirigir o Matriz de pontos mostrar Registradores de deslocamento são usados. Para iniciar o jogo você deve pressionar Começar botão e depois use outro Chaves para direção.

Abaixo estão alguns instantâneos de toda a configuração do projeto.

Protótipo de jogo Snake baseado em Arduino

Figura 1: Protótipo de jogo Snake baseado em Arduino

Imagem do Módulo LCD mostrando mensagens iniciais no Snake Game

Figura 2: Imagem do Módulo LCD mostrando mensagens iniciais no Snake Game

Imagem do controlador projetado para o jogo Snake baseado em Arduino

Figura 3: Imagem do controlador projetado para o jogo Snake baseado em Arduino

Imagem do display Dot Matrix usado para jogar Snake Game

Figura 4: Imagem do display Dot Matrix usado para jogar Snake Game

Visão geral do jogo Snake baseado em Arduino

Figura 5: Visão geral do jogo Snake baseado em Arduino

Descrição do circuito e componentes usados

Descrição do Circuito

Existe um Matriz de pontos display usado e conectado com Registrador de deslocamento 74595. Aqui são usados ​​dois registradores de deslocamento, um para acionar o Colunas e segundo para dirigir o Linhas. Pinos de controle do registrador de deslocamento de coluna (ds, sh, st) estão diretamente conectados ao número pin do Arduino 12, 10, 11 respectivamente e pinos de controle do registrador de deslocamento de linha (ds, sh, st) estão conectados ao número pin do Arduino 9, 8, 7 respectivamente.

Diagrama de pinos do display matricial usado no jogo Snake

Figura 6: Diagrama de pinos do display matricial usado no jogo Snake

Um LCD 16×2 também está conectado a este circuito para exibir Pontuação e Status de jogo como Fim do jogo, início do jogo etc. Pinos de dados do LCD de D4 a D7 estão conectados a Arduíno número do PIN (16, 15, 14, 13 / A2, A1, A0, 13) e Pinos de controle (RS, EN) dos LCDs estão conectados ao número do pino do Arduino (A4, A3). Para jogar o jogo, Chaves de controle (Baixo, Esquerda, Direita, Cima, Iniciar) estão conectados com Pinos Digitais (2, 3, 4, 5, 6) do Arduíno.

Componentes usados

1. Arduino ProMini

2. Tela de matriz de pontos 8 × 8

3. Registro de deslocamento 74595

4. Botões de pressão

5. Registre-se

6. Fio de conexão

7. Tábua de Pão

8. Fonte de alimentação

Código-fonte do projeto

###

#include
LiquidCrystal lcd(18,17,16,15,14,13);
#define ds_col 12
#define sh_col 10
#define st_col 11

#define ds_row 9
#define sh_row 8
#define st_row 7

int start=6;
int left=3;
int right=4;
int up=5;
int down=2;

char Col(21);
char Row(21);

char addc,addr;

int col(int temp)
{
  switch(temp)
  {
   case 1: return 1;break;
   case 2: return 2; break;
   case 3: return 4; break;
   case 4: return 8; break;
   case 5: return 16; break;
   case 6: return 32; break;
   case 7: return 64; break;
   case 8: return 128; break;
   default: return 0; break;
  }
}

int row(int temp)
{
  switch(temp)
  {
   case 1: return 1;break;
   case 2: return 2; break;
   case 3: return 4; break;
   case 4: return 8; break;
   case 5: return 16; break;
   case 6: return 32; break;
   case 7: return 64; break;
   case 8: return 128; break;
   default: return 0; break;
  }
}

void key 
{
if(digitalRead(left) == 0)
{
   addr=0;
   if(addc!=-1)
   addc=-1;

   else
   addc=1;
   while(digitalRead(left) == 0);
}

if(digitalRead(right)== 0)
{
   addr=0;
   if(addc!=1)
   addc=1;

   else
   addc=-1;
   while(digitalRead(right) == 0);
}

if(digitalRead(up)== 0)
{
   addc=0;
   if(addr!=-1)
   addr=-1;

   else
   addr=1;
   while(digitalRead(up) == 0);
}

if(digitalRead(down) == 0)
{
   addc=0;
   if(addr!=1)
   addr=1;

   else
   addr=-1;
   while(digitalRead(down) == 0);
}
 
}

void Display(int temp)
{
int j,k;
char colum,roww;
for(j=0;j>=1;
         roww>>=1;
         digitalWrite(sh_col, HIGH);
         digitalWrite(sh_col, LOW);
         digitalWrite(sh_row, HIGH);
         digitalWrite(sh_row, LOW);
        }
         digitalWrite(st_col, HIGH);
         digitalWrite(st_col, LOW);
         digitalWrite(st_row, HIGH);
         digitalWrite(st_row, LOW);
         key ;
         delayMicroseconds(600);
  }
}
}

void setup 
{  
  lcd.begin(16,2);
    pinMode(ds_col, OUTPUT);
    pinMode(sh_col, OUTPUT);
    pinMode(st_col, OUTPUT);
    pinMode(ds_row, OUTPUT);
    pinMode(sh_row, OUTPUT);
    pinMode(st_row, OUTPUT);
    pinMode(start, INPUT);
    pinMode(up, INPUT);
    pinMode(down, INPUT);
    pinMode(left, INPUT);
    pinMode(right, INPUT);
    lcd.setCursor(0,0);
    lcd.print(" Snake game on  ");
    lcd.setCursor(0,1);
    lcd.print("   Dot Matrix   ");
    delay(2000);
    lcd.setCursor(0,0);
    lcd.print(" By Saddam Khan ");
    lcd.setCursor(0,1);
    lcd.print("Engineers Garage");
    delay(2000);
}

void loop 
{
  int i,j,k,spd=40,score=0;
  j=k=0;
  addc=0;
  addr=1;
  lcd.clear ;
  lcd.setCursor(0,0);
  lcd.print("Score: ");
  lcd.print(score);
  while(1)
  {
   for(i=3;i<21;i++)
   {
    Row(i)=100;
Col(i)=100;
   }

  Row(0)=rand %8+1;
  Col(0)=rand %8+1;

  Row(1)=1;
  Col(1)=1;
   
  Row(2)=2;
  Col(2)=1;
  j=2;
  k=1;
  while(k==1)
  {
   addc=0;
   addr=1;
   Display(1);
    lcd.clear ;
     lcd.setCursor(0,0);
  lcd.print("Score: ");
  lcd.print(score);
   if(digitalRead(start)==0)
   {
    k=2;
    spd=40;
    score=0;
   }
  }
 
  while(k==2)
  {
    Display(spd);
        if(Row(1)>8    Col(1)>8    Row(1)<0    Col(1)<0)
{
  Row(1)=1;
         Col(1)=1;
  k=1;
         lcd.setCursor(0,1);
         lcd.print("Game Over");
         delay(5000);
}

if(Row(0)==Row(1)+addr  &&  Col(0)==Col(1)+addc)
{
  j++;
         spd=spd-2;
         score=score+5;
         lcd.clear ;
         lcd.setCursor(0,0);
         lcd.print("Score: ");
         lcd.print(score);
  Row(0)=rand %8+1;
         Col(0)=rand %8+1;
}

for(i=j;i>1;i--)
{
  Col(i)=Col(i-1);
  Row(i)=Row(i-1);
}
Col(1)=Col(2)+addc;
Row(1)=Row(2)+addr;
  }
  }
}



###

Diagramas de circuito

Diagrama de circuito-jogo de cobra baseado em Arduino

Vídeo do projeto

https://www.youtube.com/watch?v=jYbrk6k7D9k

Related Content

Back to blog

Leave a comment

Please note, comments need to be approved before they are published.