Hoje temos um projeto com um micro console de jogos, que qualquer um pode repetir.
Materiais e componentes necessários:
Este manual foi retirado do canal do AlexGyver no YouTube. O microcontrolador para este projeto precisa do seguinte:
Este é o Attiny85 no pacote DIP, será o suficiente para nós. Para não a soldar, usamos o soquete.
Também precisamos de uma tela com Aliexpress, OLED com uma resolução de 128 por 32 pixels.
Os pinos também são úteis.
Os botões que usaremos aqui são:
Claro, você pode usar teclados, mas eles terão que ser finalizados, mas eu realmente não quero cortar e soldar. O compartimento da bateria é deste tipo:
E montaremos nosso console de jogos com uma tábua de pão (se desejar, você mesmo pode fazer uma tábua). Iremos piscar o programador USBasp, mas qualquer AVR funcionará.
Diagrama de fiação Os componentes serão os seguintes:
O monitor se conecta aos pinos do barramento I2C do microcontrolador. Conectamos botões a outros pinos gratuitos. Adicione também um interruptor para ligar / desligar o sistema. E basicamente isso é tudo, resta conectar o poder.
O firmware é carregado no microcontrolador pelo programador de acordo com o seguinte esquema:
Agora vamos começar a montagem e organizar todos os elementos na tábua de pão. Vamos tentar montar e ver como tudo fica.
Acabou sendo bastante ascético. Nada mal. A parte em excesso da tábua de pão pode ser serrada.
Agora, consertamos todos os componentes apenas soldando as pernas.
Agora você precisa conectar as conclusões de acordo com o esquema. Para esse fim, o autor recomenda o uso de um fino fio de montagem chinês.
E por conveniência, você pode usar este diagrama de conexão espelhado.
Esses fios têm um isolamento tão fino que você pode soldá-los diretamente. O isolamento em si derreterá e o fio será soldado.
Depois, feche o compartimento da bateria e o interruptor. O compartimento também deve ser fixado adicionalmente com uma pistola de cola quente.
Bem, isso é tudo, o sistema está montado, resta fazer o download do firmware. Vamos piscar a "pedra" separadamente, conectando-a ao programador na placa de ensaio.
O firmware, como em todos os projetos do autor, é de domínio público e pode ser baixado em. Também na página do projeto, você encontrará um diagrama e todas as outras informações necessárias sobre esse projeto.
Não vamos nos aprofundar no download em detalhes; se algo não estiver claro, você poderá sempre ler as instruções detalhadas para o autor.
Para firmware, basta instalar Arduino ide, instale o kernel para trabalhar com os microcontroladores da série Attiny, selecione uma placa, escolha um programador.
Depois, selecionamos a frequência de 8 ou 16 MHz, abrimos a aba “Ferramentas”, localizamos e selecionamos “Record Loader”.
Não há carregador lá, mas o microcontrolador será sintonizado na frequência necessária. Em seguida, selecione a guia "Esboço" - "download via programador". E esperamos até o esboço ser carregado no microcontrolador.
Agora pegamos a "pedra" e a inserimos no coração do nosso mini console de jogos.
Como você pode ver, funciona! E agora vamos dar uma olhada no que temos no firmware. ATtiny85 é um microcontrolador com 512 bytes de RAM, que é muito pequeno. 99% das bibliotecas para trabalhar com esse monitor usam um buffer na lateral do microcontrolador para redesenhar corretamente a imagem, porque esse monitor não pode ler dados de seu próprio buffer e existe a propósito.
O buffer para essa exibição de 128 * 32 pixels terá 512 bytes, se quisermos lembrar o estado de cada bit, ou seja, um pixel.
Além do buffer, também precisamos armazenar outros dados; portanto, essa opção certamente não cabe na memória desse tamanho.
Portanto, decidiu-se diminuir a resolução da tela para 64 * 16 pixels armazenando em buffer quadrados de 4 pixels.
O autor trabalhou diretamente com essa tela e conseguiu implementar sua ideia com sucesso. Um esboço pode ser útil para quem deseja trabalhar com essa tela usando o Attiny.
Agora, com relação ao jogo em si. Funciona simplesmente. Uma bola se move em um cronômetro separado, o movimento consiste em excluir um ponto com as mesmas coordenadas e adicionar um novo ponto nas novas coordenadas.
O cálculo de coordenadas é simplesmente a adição de valores de velocidade às coordenadas no sistema de exibição.
Quando a bola ultrapassa as paredes horizontais, simplesmente as rebate, mudando o componente vertical da velocidade para o oposto, ou seja, com um sinal de menos (-).
Além disso, o programa verifica os limites verticais do campo de jogo, se a bola bate na raquete (bem, ou como você a chama corretamente), então ela salta e o ângulo de salto é aleatório.
Se a bola quebra a parede atrás da raquete, o jogador perde a rodada atual e o oponente recebe um ponto.
O movimento da raquete do jogador é implementado da mesma maneira que o movimento da bola, ou seja, a raquete antiga é apagada e uma nova é desenhada, já com novas coordenadas. As coordenadas mudam quando você clica no botão.
Portanto, é muito mais rápido do que limpar a tela inteira e renderizar todos os elementos novamente.
Agora, para a raquete do oponente. É controlado pela IA (inteligência artificial).
Bem, a inteligência artificial é dita em voz alta, é claro, mas, no entanto, essa inteligência faz uma coisa muito simples, a saber, faz a raquete se mover na direção em que a bola está agora, enquanto tenta alinhar seu centro ao longo do eixo vertical com a coordenada vertical da bola. Para realmente vencer esse oponente, o autor o fez lento, ou seja, ele calcula seu próximo lance novamente pelo cronômetro e, portanto, pode não ter tempo para pegar a bola e, assim, repelir.
Também no jogo implementou mecânicas de crescente complexidade. A cada 10 pontos a favor do jogador, a velocidade da bola aumenta. Junto com isso, a velocidade de reação da IA (oponente) também está aumentando.
Como resultado, aqui está um pequeno Pong tão simples. Não é à toa que este videogame foi desenvolvido primeiro, porque até um programador iniciante pode escrevê-lo. Mas, apesar da aparente simplicidade do projeto, a confusão com a exibição chinesa levou cerca de 20 horas de tempo puro do autor. Ao mesmo tempo, ele não levou em consideração o tempo gasto escrevendo o código do jogo em si e outros fluxos de trabalho relacionados à depuração e configuração do circuito.
Nesse aspecto, o burburinho em si é o processo de montagem, não o aplicativo.O desenvolvimento de jogos, mesmo os mais simples, pode ser realmente bastante interessante. Especialmente quando você tenta empurrá-los para um microcontrolador muito pequeno. E quando a tela chinesa espera por você ao virar da esquina ...
Só isso. Obrigado pela atenção. Até breve!
Vídeo do autor: