Índice:

ESP8266 VGA Pong: 5 etapas (com imagens)
ESP8266 VGA Pong: 5 etapas (com imagens)

Vídeo: ESP8266 VGA Pong: 5 etapas (com imagens)

Vídeo: ESP8266 VGA Pong: 5 etapas (com imagens)
Vídeo: Reutilizar Monitor VGA com Arduino 2024, Julho
Anonim
Image
Image
Lista de Materiais
Lista de Materiais

Neste Instructables vou mostrar como construir uma reprodução do clássico jogo Pong para um monitor VGA, usando um ESP8266 e alguns outros componentes.

Este jogo é possível graças à biblioteca EspVGAx recentemente publicada no GitHub por Sandro Maffiodo (também conhecido como Smaffer) e, pelo que eu sei, este é o primeiro jogo a explorá-lo.

A biblioteca implementa uma resolução de 512 x 480 pixels, armazenada em um framebuffer dentro da RAM, que requer 30720 bytes. A resolução é enorme em comparação com as do Arduino TVout ou VGAx (128 x 96 e 120 x 60 pixels respectivamente). Espero que este jogo inspire outros programadores a desenvolver ou reproduzir jogos mais complexos.

Etapa 1: Lista de Materiais

A biblioteca EspVGAx requer um ESP8266 com todos os GPIO expostos, como ESP-12E, placa NodeMCU-12E ou qualquer placa que exponha GPIO5 (D1), GPIO4 (D2) e GPIO13 (D7)

Em particular, usei:

  • um ESP8266 NodeMCU-12E (link aqui)
  • um conector DSUB15 (ou seja, um conector fêmea VGA)
  • um resistor de 330 Ohm
  • outro resistor (cerca de 1 a 3 kOhm)
  • dois potenciômetros de 10 kOhm
  • a Push Button (n.o.)
  • dois diodos (como 1N4007s)
  • uma placa de ensaio
  • fios

Eu tenho o conector DSUB15 de uma velha placa VGA PC. Como alternativa, você também pode cortar um cabo VGA antigo e conectar os fios diretamente à placa de ensaio.

Etapa 2: Upload de biblioteca e esboço

Upload de biblioteca e esboço
Upload de biblioteca e esboço

Existem diferentes métodos para programar e ESP8266; Usei o IDE do Arduino para escrever Pong e fazer o upload do código.

Observe que a biblioteca EspVGAx funciona para Arduino IDE 1.8.1. Se você tiver outras versões, o melhor é baixar os arquivos.zip e descompactá-los em uma pasta dedicada. A versão do Windows está aqui. Versões para outros sistemas operacionais estão aqui.

Depois disso, você deve baixar a biblioteca EspVGAx da página GithHub aqui (link direto para a versão zip aqui) e descompactá-la nas bibliotecas de pastas no software Arduino.

NB: Há um pequeno bug no arquivo espvgax_draw.h. Para corrigir, basta substituir a linha 17:

while (x0% 32) {com while (x0% 32 && sw> 32) {

Finalmente, você pode baixar ESP8266_Pong.rar no final desta etapa.

Depois de descompactado, para carregá-lo em seu ESP8266, você precisa configurar o IDE do Arduino.

Se você nunca fez isso, você pode encontrar todas as instruções necessárias neste Instructables, em particular na Etapa 2.

Depois que tudo estiver configurado, as configurações do ESP8266 devem ser semelhantes às mostradas na imagem acima.

Se você pode fazer o upload do código sem erros, você pode começar a montar as peças.

Etapa 3: Conectando as peças: o conector VGA

Conectando as peças: o conector VGA
Conectando as peças: o conector VGA
Conectando as peças: o conector VGA
Conectando as peças: o conector VGA
Conectando as peças: o conector VGA
Conectando as peças: o conector VGA

Eu recomendo conectar primeiro a porta VGA, conforme mostrado nas fotos acima. Observe que ao conectar os três pinos vermelho, verde e azul (ou seja, os pinos 1, 2 e 3 no conector DSUB15), você terá uma imagem em preto e branco na tela. Você também pode ter combinações de cores diferentes. Veja os detalhes na página da Biblioteca no GitHub.

Além disso, você deve conectar um resistor de 330 Ohm entre os pinos RGB e o D7 (GPIO13) no ESP8266. Isso me deu uma imagem um pouco acinzentada no meu monitor, portanto, após algumas tentativas, decidi eliminá-la por completo.

Neste ponto, se tudo funcionar corretamente, já é possível conectar o monitor e ver a tela inicial do jogo, com o banner "ESP8266 VGAx Pong".

Etapa 4: Conectando as peças: os potenciômetros e o botão

Conectando as peças: os potenciômetros e o botão
Conectando as peças: os potenciômetros e o botão

O botão deve ser conectado entre 3,3 V e pino D0 (GPIO16). Conecte também o resistor de 1 a 3 kOhm de D0 ao aterramento. Isso evita que D0 fique em um status indeterminado quando o botão estiver aberto.

A conexão dos dois potenciômetros é menos trivial, aliás o ESP8266 possui apenas uma porta de entrada analógica A0 (ADC0)! O truque é conectar as duas saídas pot.s à mesma porta e 'multiplexá-las'. Multiplexar significa simplesmente que você ligará um potenciômetro, o lerá, desligará e passará para o segundo.

Se você quiser saber mais sobre este método, você pode ler este Instructable.

Conecte um extremo do potenciômetro ao GND, o outro extremo ao D5 para o potenciômetro do jogador esquerdo e D6 para o do jogador direito.

Cada pino central do potenciômetro deve ser conectado a um diodo individual, e os outros lados dos diodos devem ser conectados a A0 (ADC0), com a polaridade mostrada na foto acima.

Etapa 5: Conclusão e Agradecimentos

Agradeço a Sandro Maffiodo - SMAFFER - pela biblioteca ESPVGAX. Este jogo não seria possível sem ele.

Espero que este Instructable sirva de inspiração para outros programadores fazerem reproduções de jogos clássicos de arcade mais complexos com o ESP8266, que tem muito menos limitações do que o Arduino.

Por fim, escrevi este Instrutível para submetê-lo ao Concurso de Brinquedos: se você gosta ou reproduz, por favor, reserve um momento para votar!

Recomendado: