Jogo Genius Com Arduino

by Pet EngComp in Circuits > Arduino

1791 Views, 1 Favorites, 0 Comments

Jogo Genius Com Arduino

FPJW3L1KVAYKWLB.png

O projeto foi baseado no jogo Genius, que consiste em um desafio de memória no qual o jogador tem que repetir a sequência que o algoritmo gera, que vai aumentando gradativamente.

Componentes

placa_uno_smd_r3_atmega328_sem_cabo_compativel_para_arduino_773_1_20200818190844.jpg
cfr-25jb-1k0.jpg
1200px-LEDs.jpg
6088-11684317.jpg
buzzer_5v.jpg

Os componentes para o projeto são:

  • 1 arduino uno;
  • 4 resistores de 330 ohm;
  • 1 resistor de 1kohm;
  • 4 LEDs de cores diferentes;
  • 6 botões;
  • 1 buzzer.

A maioria desses materiais podem ser encontrados em loja física, mas o arduino sai mais barato comprando pela internet. Caso haja pressa, é recomendado comprar no Mercado Livre (no Brasil) e, caso tenha tempo, sai mais barato ainda comprar de forma internacional, por meio de sites como Ebay, Aliexpress, etc.

Média do custo total comprando o arduino no mercado livre: R$ 84

Média do custo total comprando o arduino no exterior: R$ 55

Hardware - Montagem Do Circuito

montagem-BREADBOARD.png
montagem-SCHEMATIC.png

No arquivo abaixo pode ser encontrado o esquemático do circuito, desenvolvido com o software Fritzing, que contém a representação da ligação dos componentes mostrada nas imagens acima.

Monte o circuito em uma protoboard para testar e, se tudo funcionar bem, faça uma plaquinha PCB do circuito.

Atente-se à polarização correta dos LEDS.

Software - Explicação Do Código - Parte 1

codigopt1.png
codigopt2.png

O código pode ser baixado pelo repositório no gitlab:

https://gitlab.com/petengcomp/eletropet/jogo_genius


O código foi organizado de forma a possibilitar alterações futuras nas configurações de dificuldade, como tempo de reação e numero de toques, isso porque utilizou-se valores de variáveis declaradas com o DEFINE no começo do código, que podem ser facilmente manipulados.

Após a declaração dos pinos, eles são setados em seus devidos modos, e então cria-se um loop para piscar os leds três vezes em sequência, indicando o início da aplicação.

Ainda nas configurações iniciais, é setada a seed para a biblioteca random, que será utilizada para gerar sequências aleatórias mais à frente.

Software - Explicação Do Código - Parte 2

codigopt3.png
codigopt4.png
codigopt5.png

Em seguida, adicionou-se "condicionais de escutas" para verificar se os botões de dificuldades haviam sido apertados, ou seja, se a dificuldade foi escolhida, já configurando as variáveis de acordo com essa resposta.

Como uma forma de feedback para o jogador, foi adicionado um loop em que os leds piscam em conjunto, indicando um "modo standby" para que o jogador saiba que o programa está aguardando sua resposta.

Uma vez registrada a dificuldade selecionada, é criada a sequência aleatória para o início da partida.

Software - Explicação Do Código - Parte 3

codigopt6.png
codigopt7.png

Dando prosseguimento, cria-se o loop onde ficará rodando a partida em si, sendo que nele será computado quantas jogadas restam para o jogador, se ele acertou ou não, e quanto da sequência já foi mostrada para o jogador.

Foi adicionado um feedback para o jogador, por meio do console, indicando que o programa está esperando sua jogada.

Software - Explicação Do Código - Parte 4

codigopt8.png

Por fim, uma vez que o jogo detectou que o jogador ganhou ou perdeu, ele sai do loop principal do jogo, e registra o resultado no console, para informar o jogador e então as configurações de dificuldades são resetadas para receber a próxima partida.

Os códigos referentes às músicas utilizadas para os efeitos no buzzer podem ser visualizados no documento disponibilizado no gitlab.

Placa De Circuito Impresso

montagem-PCB.png
pcb-3d-back.png
pcb-3d-front.png

Juntamente no arquivo do Fritzing disponibilizado foi adicionado o modelo de PCB para o projeto.

Funcionamento Do Projeto

Quando o circuito for ligado os 4 leds se acenderão em sequência três vezes, e em seguida os 4 acenderão e apagarão de forma síncrona até que uma dificuldade seja selecionada.

Para selecionar a dificuldade fácil aperte o botão ligado ao pino 12 do Arduino, para a dificuldade difícil pressione o botão ligado ao pino 7.

As configurações de dificuldade podem ser ajustadas por programação alterando os valores no início do código. As configurações padrão são:


-> dificuldade fácil: 

  •     sequência máxima de 9 cores
  •     15 segundos para colocar a sequência
  •     leds ficam acesos por 1/4 segundos


-> dificuldade difícil:

  •     sequência máxima de 15 cores
  •     12 segundos para colocar a sequência
  •     leds ficam acesos por 1/8 segundos


Após selecionada a dificuldade, o Arduíno acenderá cores em ordem aleatória e aguardará até que o jogador repita a sequência, o tempo se acabe ou o jogador erre uma cor da sequência. A cada sequência acertada, o número de cores da próxima sequência aumenta em 1.

Caso o jogador Consiga acertar a sequência máxima de cores da dificuldade atual, ele vence o jogo. Caso ele erre alguma sequência ou o tempo para repitir uma dada sequência se acabe, o jogador perde o jogo. Em ambos os casos o jogo voltará ao começo e aguardará até que uma nova dificuldade seja selecionada.

Licença Do Projeto