Índice:

Pong Tennis com matriz de LED, Arduino e joysticks: 5 etapas (com imagens)
Pong Tennis com matriz de LED, Arduino e joysticks: 5 etapas (com imagens)
Anonim
Pong Tennis com matriz de LED, Arduino e joysticks
Pong Tennis com matriz de LED, Arduino e joysticks

Este projeto é destinado a iniciantes e experientes experientes. Em um nível básico isso pode ser feito com uma placa de ensaio, fios de jumper e preso a um pedaço de material (usei madeira) com Blu-Tack e sem solda. No entanto, em um nível mais avançado, ele pode ser soldado a uma placa de desempenho ou a um PCB personalizado.

Como este foi um projeto de bloqueio, não tive acesso a muitas ferramentas ou materiais, por isso está preso a um pedaço de madeira que é um pouco pequeno demais com o Blu-Tack; no entanto, apesar disso, é um projeto divertido que vem junto rapidamente e é composto de peças comumente disponíveis que podem ser encontradas on-line de maneira econômica.

Etapa 1: Peças

Para fazer o Jogo Pong você precisa;

  • 1x um Arduino (qualquer tipo funcionará)
  • 4 matrizes de LED MAX7219 8x8
  • 2x joysticks
  • 1 campainha piezoelétrica (opcional)
  • 15 fios de ligação fêmea-fêmea (3x grupos de 5)
  • 15 fios de jumper macho-fêmea (3x grupos de 5)
  • Fios de jumper 18x Macho-Macho
  • 1x breadboard
  • 1x resistor 220Ω

Em vez de uma placa Arduino Uno ou Nano, você pode usar um Arduino baseado em breadboard;

  • 1x ATmega328p 28 pinos IC
  • 1x oscilador de cristal de 16kHz
  • 2x capacitores de cerâmica 22pF
  • 1x conversor USB FTDI UART
  • 1x capacitor eletrolítico 100uF
  • 1x Micro USB Breakout (opcional)

Ferramentas;

  • PC com Arduino IDE (e biblioteca LedControl)
  • Cabo USB relevante para o seu Arduino
  • Banco de energia para alimentar o jogo longe de seu computador

Etapa 2: Fiação

Fiação
Fiação
Fiação
Fiação

A fiação é muito simples, pois tudo o que você precisa são fios de jumper para conectar os conectores das Matrizes e Joysticks ao Arduino. A única complicação é a alimentação, pois o Arduino Uno possui apenas 3 conexões GND e uma conexão de 5v. É aqui que a placa de ensaio entra e atua como um trilho de distribuição de energia para todos os componentes. Se você estiver usando um NANO, a placa de ensaio terá a mesma finalidade, além de permitir que você conecte tudo.

Para a fiação, siga estas conexões.

  • Joystick esquerdo - GND e 5v para seus respectivos trilhos de alimentação. SW - pino 9, VRx - A0, VRy - A1.
  • Joystick direito - GND e 5v para seus respectivos trilhos de alimentação. SW - pino 8, VRx - A2, VRy - A3.
  • Matriz de LED mais à direita - GND e 5v para seus respectivos trilhos de alimentação. DIN - 13, CS - 11, CLK - 12. (De acordo com a linha 25)
  • Todas as outras matrizes de LED podem ser encadeadas na saída da primeira, indo da direita para a esquerda para que o código funcione corretamente.
  • Campainha opcional - Ânodo (+) através do resistor limitador de corrente de 220Ω para o pino 10, Cátodo (-) - GND.

Etapa 3: Fiação Alternativa

Fiação Alternativa
Fiação Alternativa
Fiação Alternativa
Fiação Alternativa
Fiação Alternativa
Fiação Alternativa

Depois de conectá-lo a um Arduino UNO para economizar espaço, decidi colocar o Arduino IC do UNO na placa de ensaio com um oscilador de cristal de 16Mhz e um par de capacitores de 22pF de cada lado ao aterramento. Acho que esta foi uma modificação que valeu a pena, pois faz com que o projeto pareça mais organizado e mais acabado, mas você precisa usar um programador USB FTDI para atualizar o programa.

Etapa 4: Código + Explicação

Para fazer o upload do código para o Arduino, baixe a biblioteca LedControl do GitHub aqui, github.com/wayoda/LedControl e adicione o arquivo Zip ou adicione-o por meio do Library Manager no IDE. Depois disso, abra o esboço em anexo, selecione seu Arduino nas configurações de placa e porta em ferramentas e faça o upload para o arduino.

Explicação

Linha 1: adiciona a biblioteca

Linha 5-23: Configura todas as variáveis, constantes e números de pinos.

Linha 25: configura o LED Martix e configura os pinos de controle e quantos visores.

Linha 27: configura a função de reinicialização.

Linha 30-35: Função de desligamento para ligar / desligar todos os visores juntos.

Linha 38-43: função SetIntensity para definir o brilho de todos os monitores juntos.

Linha 46-51: função ClearAll para limpar todos os visores juntos.

Linha 53-64: joystick Função para obter a posição dos joysticks, mapeá-los para as 7 posições possíveis do bastão para acertar a bola e então mover o bastão para a nova posição.

Linha 67-435: Função que move a bola para o jogador esquerdo na altura e velocidade especificadas, verifica se o jogador bateu nela e continua e define o status de acidente como verdadeiro ou rebate a bola de volta, adiciona 1 ao placar e aumenta a velocidade.

Linha 438-811: Função que move a bola para o jogador certo na altura e velocidade especificadas, verifica se o jogador bateu nela e continua e define o status de acidente como verdadeiro ou devolve a bola, adiciona 1 ao placar e aumenta a velocidade.

Linha 813-823: Função para exibir um rosto sorridente, tique, cruz ou ponto de interrogação no visor especificado (0 à direita a 3 à esquerda).

Linha 861-979: Função para exibir os números 0-9 no display especificado.

Linha 981-1047: Função para exibir a pontuação de cada lado da tela do jogador.

Linha 1049-1064: Função para verificar se o player está pronto.

Linha 1066-1076: Seção de configuração do código que é executado uma vez quando o programa é iniciado.

Linha 1078-1136: Seção do loop principal para lógica do jogo onde todas as funções são usadas e onde quem ganha é decidido e então reinicia o programa após 5 segundos de mostrar a pontuação.

Etapa 5: Obrigado pela leitura

Obrigado pela leitura
Obrigado pela leitura

Obrigado por ler este Instructable, foi um projeto divertido de bloqueio que surgiu ao longo de alguns dias enquanto eu aprendia mais sobre a programação do Arduino. Se você gostou, sinta-se à vontade para votar no concurso do Arduino.

Recomendado: