Jogo de cobra usando Arduino

Juego de serpientes usando Arduino

Este es un sencillo juego de serpientes dirigido a niños y aficionados. Este juego está hecho con Arduino.

En este juego de serpientes, la pantalla de matriz de puntos se utiliza para mostrar serpientes y comida. Y la puntuación y el estado del juego, como Game Start y Game Over, se muestran en una pantalla LCD de 16×2 . Para controlar el juego se utilizan cinco botones (Inicio, Arriba, Abajo, Izquierda y Derecha). Para controlar la pantalla Dot Matrix se utilizan registros de desplazamiento . Para iniciar el juego debes presionar el botón Inicio y luego usar otras teclas para orientarte.

A continuación se muestran algunas instantáneas de toda la configuración del proyecto.

Protótipo de jogo Snake baseado em Arduino

Figura 1: Prototipo del juego Snake basado en Arduino

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

Figura 2: Imagen del módulo LCD que muestra los mensajes iniciales en Snake Game

Imagem do controlador projetado para o jogo Snake baseado em Arduino

Figura 3: Imagen del controlador diseñado para el juego Snake basado en Arduino

Imagem do display Dot Matrix usado para jogar Snake Game

Figura 4: Imagen de la pantalla Dot Matrix utilizada para jugar Snake Game

Visão geral do jogo Snake baseado em Arduino

Figura 5: descripción general del juego Snake basado en Arduino

Descripción del circuito y componentes utilizados.

Descripción del circuito

Hay una pantalla Dot Matrix utilizada y conectada con Shift Register 74595 . Aquí se utilizan dos registros de desplazamiento, uno para controlar las columnas y el segundo para controlar las filas . Los pines de control del registro de desplazamiento de columna ( ds, sh, st) están conectados directamente al pin Arduino número 12, 10, 11 respectivamente y los pines de control del registro de desplazamiento de fila (ds, sh, st) están conectados al pin Arduino número 9, 8, 7 respectivamente.

Diagrama de pinos do display matricial usado no jogo Snake

Figura 6: Diagrama de pines de la matriz utilizada en el juego Snake

También se conecta una pantalla LCD de 16×2 a este circuito para mostrar la puntuación y el estado del juego , como fin del juego, inicio del juego , etc. Los pines de datos de la pantalla LCD de D4 a D7 están conectados al número PIN de Arduino (16, 15, 14, 13/A2, A1, A0, 13) y los pines de control (RS, EN) de las pantallas LCD están conectados al número de pin de Arduino ( A4 , A3). Para jugar, las teclas de control (abajo, izquierda, derecha, arriba, inicio) están conectadas con los pines digitales (2, 3, 4, 5, 6) del Arduino.

Componentes utilizados

1. Arduino ProMini

2. Pantalla de matriz de puntos de 8 × 8

3. Registro de turno 74595

4. Botones a presión

5. Regístrate

6. Cable de conexión

7. Tabla de pan

8. Fuente de alimentación

Código fuente del proyecto

###

 #incluir
 Lcd de cristal líquido (18,17,16,15,14,13);
 #definir ds_col 12
 #definir sh_col 10
 #definir st_col 11

 #definir ds_row 9
 #definir sh_row 8
 #definir st_row 7

 int inicio=6;
 int izquierda = 3;
 int derecha=4;
 int arriba=5;
 int abajo=2;

 carbón de leña (21);
 fila de caracteres (21);

 char addc,dirección;

 columna interna (temperatura interna)
 {
 interruptor (temperatura)
 {
  caso 1: retorno 1; ruptura;
  caso 2: devolución 2; romper;
  caso 3: devolución 4; romper;
  caso 4: retorno 8; romper;
  caso 5: retorno 16; romper;
  caso 6: retorno 32; romper;
  caso 7: retorno 64; romper;
  caso 8: devolver 128; romper;
  predeterminado: devolver 0; romper;
 }
 }

 fila interna (temperatura interna)
 {
 interruptor (temperatura)
 {
  caso 1: retorno 1; ruptura;
  caso 2: devolución 2; romper;
  caso 3: devolución 4; romper;
  caso 4: retorno 8; romper;
  caso 5: retorno 16; romper;
  caso 6: retorno 32; romper;
  caso 7: retorno 64; romper;
  caso 8: devolver 128; romper;
  predeterminado: devolver 0; romper;
 }
 }

 llave nula
 {
 si (lectura digital (izquierda) == 0)
 {
  dirección=0;
  si(agregar!=-1)
  agregarc=-1;

  demás
  agregarc=1; 
while(digitalRead(izquierda) == 0);
 }

 si (lectura digital (derecha) == 0)
 {
 dirección=0;
 si(agregar!=1)
 agregarc=1;

 demás
 agregarc=-1;
 while(digitalRead(derecha) == 0);
 }

 si(lectura digital(arriba)== 0)
 {
 agregarc=0;
 si(dirección!=-1)
 dirección=-1;

 demás
 dirección=1;
 while(digitalRead(arriba) == 0);
 }

 si(lectura digital(abajo) == 0)
 {
 agregarc=0;
 si(dirección!=1)
 dirección=1;

 demás
 dirección=-1;
 while(digitalRead(abajo) == 0);
 }

 }

 Pantalla anulada (temperatura interna)
 {
 intj,k;
 columna de caracteres, fila;
 para(j=0;j >=1;
 filaw>>=1;
 escritura digital (sh_col, ALTA);
 escritura digital (sh_col, BAJO);
 escritura digital (sh_row, ALTA);
 escritura digital (sh_row, BAJO);
 }
 escritura digital (st_col, ALTA);
 escritura digital (st_col, BAJO);
 escritura digital (st_row, ALTA);
 escritura digital (st_row, BAJO);
 llave;
 retrasoMicrosegundos(600);
 }
 }
 }

 configuración vacía
 {
 lcd.comenzar(16,2);
 pinMode(ds_col, SALIDA); 
pinMode(sh_col, SALIDA);
 pinMode(st_col, SALIDA);
 pinMode(ds_row, SALIDA);
 pinMode(sh_row, SALIDA);
 pinMode(st_row, SALIDA);
 pinMode(inicio, ENTRADA);
 pinMode(arriba, ENTRADA);
 pinMode(abajo, ENTRADA);
 pinMode(izquierda, ENTRADA);
 pinMode(derecha, ENTRADA);
 lcd.setCursor(0,0);
 lcd.print("Juego de serpiente activado");
 lcd.setCursor(0,1);
 lcd.print(" Matriz de puntos ");
 retraso(2000);
 lcd.setCursor(0,0);
 lcd.print(" Por Saddam Khan ");
 lcd.setCursor(0,1);
 lcd.print("Garaje de ingenieros");
 retraso(2000);
 }

 bucle vacío
 {
 int i,j,k,spd=40,puntuación=0;
 j=k=0;
 agregarc=0;
 dirección=1;
 lcd.claro;
 lcd.setCursor(0,0);
 lcd.print("Puntuación: ");
 lcd.print(puntuación);
 mientras(1)
 {
 para(i=3;i<21;i++)
 {
 Fila(i)=100;
 Col(i)=100;
 }

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

 Fila(1)=1;
 Col(1)=1;

 Fila(2)=2;
 Col(2)=1;
 j=2;
 k=1;
 mientras(k==1)
 {
 agregarc=0;
 dirección=1;
 Mostrar(1);
 lcd.claro; 
lcd.setCursor(0,0);
 lcd.print("Puntuación: ");
 lcd.print(puntuación);
 si(digitalRead(inicio)==0)
 {
 k=2;
 velocidad=40;
 puntuación=0;
 }
 }

 mientras(k==2)
 {
 Pantalla (velocidad);
 if(Fila(1)>8 Col(1)>8 Fila(1)<0 Col(1)<0)
 {
 Fila(1)=1;
 Col(1)=1;
 k=1;
 lcd.setCursor(0,1);
 lcd.print("Se acabó el juego");
 retraso(5000);
 }

 if(Fila(0)==Fila(1)+dirección && Col(0)==Col(1)+addc)
 {
 j++;
 spd=spd-2;
 puntuación=puntuación+5;
 lcd.claro;
 lcd.setCursor(0,0);
 lcd.print("Puntuación: ");
 lcd.print(puntuación);
 Fila(0)=rand %8+1;
 Col(0)=rand %8+1;
 }

 para(i=j;i>1;i--)
 {
 Col(i)=Col(i-1);
 Fila(i)=Fila(i-1);
 }
 Col(1)=Col(2)+añadirc;
 Fila(1)=Fila(2)+dirección;
 }
 }
 } 



###

Diagramas de circuito

Diagrama del circuito del juego de serpientes basado en Arduino

Vídeo del proyecto

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

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.