Fazendo um jogo usando Arduino Uno e Top 10 × 2 LCD

Fazendo um jogo usando Arduino Uno e Top 10 × 2 LCD
Para criar projetos diferentes e para aprender sobre os circuitos, a plataforma Arduino é a opção viável para os iniciantes, pois fornece uma ampla gama de opções de hardware e software para seus usuários. Para o software, principalmente o Arduino IDE é usado e para hardware principalmente o Arduino UNO é usado. Usando o Arduino Uno e o Arduino IDE, criamos um jogo chamado Ardi Pac, no qual criamos um personagem que evita seu inimigo quando pressionamos um botão.

Como criar um jogo no Arduino Uno usando LCD

Para criar um jogo, temos que criar um circuito que implementaremos no hardware e, antes disso, precisamos selecionar os componentes necessários necessários para projetar o circuito:

  • Pão de pão
  • 1 16x2liquid Crystal Display
  • Conectando fios
  • 1 botão
  • 1 potenciômetro
  • Arduino Uno

A figura abaixo mostra o esquema do circuito projetado para criar um jogo usando Arduino Uno:

Como montar o hardware para criar o jogo usando Arduino Uno

Para facilitar a montagem de hardware, damos a imagem abaixo que mostram como podemos conectar os componentes necessários para criar o jogo Arduino:

Conectamos os pinos de dados do LCD a Arduino UNO usando seu pino 5,4,3,2 com os fios roxos e para o ajuste do brilho do LCD, conectamos o potenciômetro. O fio amarelo conecta a saída do potenciômetro com o LCD. Para jogar o jogo, usamos o botão que mudará a posição do personagem conectando seu pino único usando o fio colorido do ciano para o pino 8 de Arduino e aterrando o outro pino.

Para conectar o LCD, o potenciômetro e o botão com suprimento, pegamos o suprimento da Arduino Uno usando os pinos da placa de ensaio.

Como escrever o código Arduino para criar um jogo usando Arduino Uno

Fornecemos abaixo do Código Arduino para fazer um jogo de evitação de obstáculos usando Arduino Uno:

#include / * decarling lcd a biblioteca * /
LiquidCrystal LCD (12, 11, 5, 4, 3, 2);/* Atribuindo os pinos de Arduino a LCD*/
int botão = 8;/*atribuindo o pino Arduino para o botão de pressão*/
/*Variáveis ​​para armazenar tempo para mover o inimigo e o personagem*/
Long a não assinado a;
Long b não assinado;
não assinado longa c;
não assinado longa d;
int deoun = 500; / * Definindo a velocidade do inimigo */
int diminuídolay = 20; / * Para diminuir a velocidade do inimigo */
int state2 = 0;/ * variável que armazenará o valor do botão de pressão quando pressionado no início do jogo */
int state1 = 0;/* variável para armazenar o valor do botão pressionado para mover o local do caractere*/
bool Pac = 0;/* variável que salvará o valor para o caractere detectar a colisão com o inimigo*/
Int i;/* variável que é usada para mover o inimigo no LCD*/
Int pontos = 0;/ * variável para armazenar os pontos alcançados o jogador */
/*declarando os binários para inimigo e personagem*/
Inimigo de byte [8] =
B00000,
B00100,
B01110,
B111111,
B10101,
B111111,
B111111,
B10101
;
Byte Pac1 [8] =
B00000,
B01110,
B11011,
B11110,
B11100,
B11110,
B111111,
B01110
;
Byte Pac2 [8] =
B00000,
B01110,
B11011,
B111111,
B111111,
B111111,
B111111,
B01110
;
Void Setup ()
pinmode (botão, input_pullup); // atribui o modo de trabalho ao botão de pressão */
LCD.Begin (16, 2);/* Declarando o tamanho da tela*/
LCD.createChar (7, inimigo); // declarando o inimigo como um personagem
LCD.createChar (6, Pac1); // declarando o Pac1 como um personagem
LCD.createChar (5, Pac2); // declarando o Pac2 como um personagem
i = 15;/ * Definindo o número de colunas para o inimigo */
/ * Economizando o tempo nas variáveis ​​de tempo declaradas acima */
a = millis ();
b = millis ();
c = millis ();
d = millis ();
estado1 = digitalRead (botão);/ * lendo o estado do botão pressionado pela primeira vez */
while (state1 == alto) / * se o botão não for pressionado */
/ * Exibindo a animação do jogo e do personagem */
LCD.setCursor (3, 0);
LCD.print ("ardi-Pac");
LCD.setCursor (3, 1);
LCD.print ("Pressione Iniciar");
LCD.setCursor (13, 0);
LCD.Escreva (6);
atraso (300);
LCD.setCursor (13, 0);
LCD.Escreva (5);
atraso (300);
state1 = digitalRead (botão);/* Leia novamente o estado do botão de pressão*/
if (state1 == baixo) / * se pressionado, mova -se para a seção de loop */
quebrar;


atraso (500);

Void Loop ()
State2 = digitalRead (botão);/ * Verifique o estado do botão */
if ((Millis ()-a)> = atraso) /* Inicie o movimento do inimigo no LCD* /
a = millis ();
LCD.claro();
LCD.setCursor (i, 1);
LCD.Escreva (7);
i = i-1;
if (i == -1) /* condição para mover o inimigo no LCD a partir de 15 e ir para zero*/
i = 15;

LCD.setCursor (6, 0);
LCD.print ("pontos:");
LCD.impressão (pontos);/ * exibindo os pontos alcançados pelo jogador */

if ((Millis ()-b)> = 50)
b = millis ();
if (state2 == Low && Pac == false) / * Exibindo o caractere no LCD lendo o estado do botão * /
LCD.setCursor (1, 0);/* Colocando o caractere na primeira coluna e a primeira linha quando o botão é pressionado*/
LCD.Escreva (6);
Pac = true; / * Atualizando que nenhuma colisão com o inimigo */
b = millis ();/ * economizando o tempo */

caso contrário, se (Pac == true) /* se ainda não houver colisão, coloque -o no mesmo lugar* /
LCD.setCursor (1, 0);
LCD.Escreva (6);

caso contrário, se (Pac == false) /* mova o personagem para a segunda linha da primeira coluna no LCD*/
LCD.setCursor (1, 0);
LCD.imprimir(" ");
LCD.setCursor (1, 1);
LCD.Escreva (6);


if ((milis ()-c)> = 1500 && pac == true) / * se o botão for pressionado novamente, mova o personagem para a primeira linha */
c = millis ();
LCD.setCursor (1, 1);
LCD.Escreva (6);
LCD.setCursor (1, 0);
LCD.imprimir(" ");
Pac = falso;

if (((Millis ()-d)> = 1000) && (i == 1)) /* se o inimigo tomar seu LCD da primeira rodada sem qualquer colisão* /
d = millis ();
if (Pac == true)
pontos = pontos+1;/* A colisão é detectada e adicione um nos pontos*/
if (pontos%5 == 0)
Atraso = atraso decadentelay;/* Diminua a velocidade do inimigo*/
se (atraso <= 200) //changed the speed of enemy to 200
Diminuição dolay = 0; / * Não aumente a velocidade do inimigo */



else / * Quando a colisão ocorre limpa o LCD e o jogo de exibição */
LCD.claro();
LCD.setCursor (0, 0);
LCD.Imprimir ("jogo over!");
LCD.setCursor (0, 1);
LCD.print ("Start Again");
pontos = 0;
i = 15;
Atraso = 500; // alterna de volta à velocidade básica
State2 = digitalRead (botão);
while (state2 == alto) /* continue lendo o estado do botão quando o estado estiver alto*/
State2 = digitalRead (botão); /*Se o botão pressionado, inicie o jogo novamente*/

atraso (500);


Criamos um jogo simples que evita as colisões com objetos recebidos e, para isso, declaramos primeiro os binários para o inimigo e o personagem. Além disso, definimos a biblioteca para a tela usada com Arduino Uno.

Para mover o inimigo no LCD, usamos o loop for que diminuirá um em seu valor em cada iteração. Em seguida para mover a posição do personagem, usamos o botão de taceira de tal maneira que, quando o botão é pressionado, o personagem se move para a primeira linha do LCD.

Para trazer de volta o personagem para o seu local original, usamos a função Mills (). Encontramos o tempo em que o personagem subiu e depois definimos o tempo após o qual o personagem voltará à sua posição.

Quando o local do inimigo e o personagem tiver o mesmo que o jogo vai parar e começará novamente quando o botão for pressionado.

Como criar hardware para fazer um jogo usando Arduino e LCD

A imagem abaixo é a implementação de hardware de acordo com o conjunto de hardware descrito acima:

A imagem acima é o menu principal do jogo, pressionar o botão de pressão iniciará o jogo:

Pressionar o botão fará com que o personagem salte para evitar inimigos e, ao colidir com o inimigo, o menu a seguir será exibido:

Para ilustrar como o jogo funcionará, damos o GIF animado abaixo:

Conclusão

A plataforma Arduino pode ser usada para criar uma variedade de projetos que podem ser de grande ajuda para iniciantes para aprender sobre os circuitos. Criamos um jogo no qual o jogador tem para evitar os objetos que recebem. Para mover o jogador, usamos o botão e também calculamos os pontos iguais ao número de obstáculos evitados. Também fornecemos o código Arduino para criar o jogo, bem como dada a demonstração de hardware.