Índice:
- Etapa 1: Visão geral
- Etapa 2: Materiais
- Etapa 3: Fazendo o jogo
- Etapa 4: Modificações futuras
- Etapa 5: Conclusão
Vídeo: Campo Minado: 5 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
Para o nosso projeto final CPE 133, Chase e eu decidimos criar um jogo ‘Campo Minado’ que utilizava botão e troca de entrada de uma placa Basys-3, bem como código VHDL. Um nome melhor para o jogo poderia muito bem ser ‘Roleta Russa’, no entanto, queríamos um nome mais familiar. O jogo envolve o usuário para pressionar o botão do meio no tabuleiro Basys para atribuir aleatoriamente um dos 16 interruptores para ser "ativo" com uma bomba. Dois jogadores, então, se revezam ativando interruptores, um de cada vez, até que um dos jogadores vire o interruptor com a 'bomba'. Quando isso acontece, o display de sete segmentos alerta os jogadores de que aquele jogador acabou de perder o jogo.
Etapa 1: Visão geral
O projeto utilizou muitos dos módulos VHDL que utilizamos ao longo deste trimestre. Um contador de quatro bits foi usado em conjunto com a transição do clock para simular um número aleatório de quatro bits para ativar uma das opções. Um diagrama de estado também foi usado para gerar palavras diferentes para o display de sete segmentos, variando de ‘JOGAR’ quando os jogadores estão no meio do jogo, a ‘PERDER’ quando um dos jogadores acionou o botão ativo.
Etapa 2: Materiais
- Basys3 Development Board da Digilent, Inc.
- Vivado Design Suite BC_DEC.vhd (Este arquivo foi fornecido para nós no Polylearn e foi escrito por Bryan Mealy)
- Um contador de 4 bits feito de flip-flops T
- A FSM
Etapa 3: Fazendo o jogo
O primeiro passo para fazer este jogo foi desenhar um diagrama de circuito com todos os componentes que usaremos. As entradas para este sistema eram o botão 1, os 16 interruptores e o Relógio. As saídas foram o display de sete segmentos e os ânodos. Depois de desenhar o diagrama de circuito, escrevemos arquivos-fonte individuais para cada componente no Vivado e os colocamos juntos usando mapas de portas sob o arquivo-fonte principal.
Toda a base do jogo gira em torno de atribuir aleatoriamente um dos 16 interruptores para ficar ativo com uma bomba, e para os jogadores não saberem qual interruptor está ativo até que o interruptor ativo seja ligado. Analisamos geradores de números aleatórios e pseudo-aleatórios online, mas finalmente decidimos que usar um contador de 4 bits e atribuir a chave correspondente para ser ativo é suficientemente aleatório para o que estávamos procurando. Conseguimos reaproveitar nosso contador de 4 bits que criamos em um projeto anterior para poder trabalhar nesta atribuição. Usamos o contador para criar um número aleatório entre 0-15; em seguida, no componente main1, atribuímos o equivalente decimal do número aleatório à sua chave correspondente na placa. Como visto no esquema, tanto a saída X ('bomba ativa') do componente principal1 e os interruptores que os jogadores ligam vão para FSM1. A máquina de estado emite um valor Z de um bit que é lido por BC_DEC1. A máquina de estado finito que usamos tem dois estados diferentes: no estado A, o display de sete segmentos produz 'PLAY' e a máquina permanece nesse estado até reconhecer que a chave ativada foi invertida. Uma vez que isso acontece, o FSM vai para o estado B, onde produz 'LOSE' para o display de sete segmentos e permanece nesse estado até que todos os 16 interruptores sejam colocados em '0'. Quando essa condição é atendida, o FSM então vai mais uma vez para o estado A e aguarda os jogadores para iniciar outro jogo. Um diagrama de Moore para ajudar a entender este FSM é mostrado acima.
Etapa 4: Modificações futuras
Algumas modificações que estávamos considerando fazer em nosso jogo incluem adicionar mais bombas ao campo (possivelmente aumentando de uma para três), adicionar um contador de pontuação e várias rodadas. No final das contas, decidimos contra essas melhorias, pois descobrimos que jogar um jogo mais longo e estendido normalmente era mais tenso e, no final, mais divertido do que um jogo que normalmente terminava após três ou quatro viradas de botão.
Etapa 5: Conclusão
Ficamos muito felizes com o resultado final deste projeto; não apenas porque a versão final do jogo foi divertida de jogar, mas também porque criar e programar o projeto exigiu que utilizássemos a maior parte, senão tudo o que aprendemos neste trimestre. Utilizamos flip-flops, contadores, FSMs, o relógio, a entrada do usuário na placa e a saída para o display de sete segmentos.
Também aprendemos como alguns erros de sintaxe podem quebrar completamente o programa (mesmo que sejam considerados bons em outras linguagens de programação como Python ou Java) e que somente após várias simulações e várias iterações do código sendo carregado e testado no bordo, você finalmente será capaz de eliminar todos os bugs do seu código.
Recomendado:
Medição de campo magnético usando HMC5883 e Raspberry Pi: 4 etapas
Medição de campo magnético usando HMC5883 e Raspberry Pi: O HMC5883 é uma bússola digital projetada para detecção magnética de baixo campo. Este dispositivo possui uma ampla faixa de campo magnético de +/- 8 Oe e uma taxa de saída de 160 Hz. O sensor HMC5883 inclui drivers de cinta de desmagnetização automática, cancelamento de deslocamento e
Medição de campo magnético usando HMC5883 e Arduino Nano: 4 etapas
Medição de campo magnético usando HMC5883 e Arduino Nano: O HMC5883 é uma bússola digital projetada para detecção magnética de baixo campo. Este dispositivo possui uma ampla faixa de campo magnético de +/- 8 Oe e uma taxa de saída de 160 Hz. O sensor HMC5883 inclui drivers de cinta de desmagnetização automática, cancelamento de deslocamento e
Medição de campo magnético usando HMC5883 e fóton de partícula: 4 etapas
Medição de campo magnético usando HMC5883 e partícula de fóton: O HMC5883 é uma bússola digital projetada para detecção magnética de baixo campo. Este dispositivo possui uma ampla faixa de campo magnético de +/- 8 Oe e uma taxa de saída de 160 Hz. O sensor HMC5883 inclui drivers de cinta de desmagnetização automática, cancelamento de deslocamento e
Microscópios de fluorescência e campo claro de baixo custo: 9 etapas (com imagens)
Microscópios de fluorescência e de campo claro de baixo custo: a microscopia de fluorescência é uma modalidade de imagem usada para visualizar estruturas específicas em amostras biológicas e outras amostras físicas. Os objetos de interesse na amostra (por exemplo, neurônios, vasos sanguíneos, mitocôndrias, etc.) são visualizados porque fluorescentes
Sensor de campo magnético de 3 eixos: 10 etapas (com imagens)
Sensor de campo magnético de 3 eixos: os sistemas de transferência de energia sem fio estão a caminho de substituir o carregamento convencional com fio. Variando de minúsculos implantes biomédicos até a recarga sem fio de enormes veículos elétricos. Uma parte integrante da pesquisa sobre energia sem fio é