← Todos os projetos
Intermediário ⏱ 50 min 02 de julho de 2026

Jogo Pong com Arduino e matriz de LED 8x8 (MAX7219)

Que tal um mini fliperama? Neste projeto você monta o clássico jogo Pong numa matriz de LED 8x8: a bolinha quica pelas bordas e você controla a raquete com um joystick para rebater. Se deixar a bola passar, o jogo reinicia. Diversão retrô pura, feita com Arduino.

Projeto Arduino: Jogo Pong com Arduino e matriz de LED 8x8 (MAX7219) — A2 Robotics

Como funciona

A matriz de LED 8x8 é uma telinha de 64 LEDs organizados em 8 linhas e 8 colunas. Controlar 64 LEDs individualmente exigiria muitos pinos, mas o chip MAX7219 resolve isso: ele comanda toda a matriz usando apenas 3 pinos do Arduino, e a biblioteca faz o trabalho pesado de acender os pontos certos. Neste jogo, um ponto aceso é a bolinha, e uma coluna de pontos acesos na lateral é a sua raquete. O joystick, lido pela porta analógica, move a raquete para cima e para baixo. A cada quadro, o programa recalcula a posição da bola, verifica se ela bateu numa parede (e inverte a direção) ou se você a rebateu com a raquete. Se a bola passar pela sua raquete, você perde e o jogo recomeça.

O que você vai precisar

Todos os componentes disponíveis na A2 Robotics — clique em cada item para comprar

Arduino Uno R3

1 unidade

Ver produto ↗

Matriz de LED 8x8 com MAX7219

1 unidade

Ver produto ↗

Módulo joystick KY-023

1 unidade

Ver produto ↗

Protoboard

1 unidade

Ver produto ↗

Jumpers (cabos de ligação)

1 kit

Ver produto ↗

Esquema de ligação

ARDUINO UNO R3 D10D11D13 A0A15VGND Matriz 8x8 (MAX7219) DINCSCLK Joystick
DIN → D11 CS → D10 CLK → D13 Joystick X → A0 Joystick Y → A1
Alimentação da matriz Ligue o VCC da matriz no 5V e o GND no GND do Arduino. A matriz consome pouco, então pode ser alimentada direto pela placa.

Biblioteca necessária

Este projeto usa a biblioteca LedControl, que controla a matriz pelo chip MAX7219. Na IDE do Arduino, vá em Ferramentas → Gerenciar Bibliotecas, procure por "LedControl" (de Eberhard Fahle) e instale. Sem ela o código não compila.

O código

O código desenha a raquete na coluna da direita (controlada pelo joystick) e a bolinha quicando pela tela. A cada quadro, ele move a bola, verifica colisões com as paredes e com a raquete, e reinicia se você deixar a bola escapar. Ajuste a velocidade mudando o valor do delay no final.

// Jogo Pong na matriz 8x8 (MAX7219) — A2 Robotics
#include <LedControl.h>

// LedControl(DIN, CLK, CS, quantidade de matrizes)
LedControl matriz = LedControl(11, 13, 10, 1);

#define JOY_Y A1   // eixo vertical do joystick

// Posição da bola e direção
int bolaX = 3, bolaY = 3;
int dirX = 1, dirY = 1;

// Posição da raquete (topo dela)
int raquete = 3;

void setup() {
  matriz.shutdown(0, false);   // liga a matriz
  matriz.setIntensity(0, 8);  // brilho (0 a 15)
  matriz.clearDisplay(0);
}

void loop() {
  matriz.clearDisplay(0);

  // Move a raquete conforme o joystick (coluna 7)
  int leitura = analogRead(JOY_Y);
  raquete = map(leitura, 0, 1023, 0, 5);
  desenharRaquete();

  // Move a bola
  bolaX += dirX;
  bolaY += dirY;

  // Quica nas paredes de cima e de baixo
  if (bolaY <= 0 || bolaY >= 7) dirY = -dirY;
  // Quica na parede da esquerda
  if (bolaX <= 0) dirX = -dirX;

  // Chegou na coluna da raquete (coluna 6)?
  if (bolaX >= 6) {
    if (bolaY >= raquete && bolaY <= raquete + 2) {
      dirX = -dirX;   // rebateu!
    } else if (bolaX >= 7) {
      perdeu();       // deixou passar
    }
  }

  matriz.setLed(0, bolaY, bolaX, true);  // desenha a bola
  delay(220);  // velocidade do jogo
}

// Desenha a raquete (3 LEDs) na coluna 7
void desenharRaquete() {
  for (int i = 0; i < 3; i++) {
    matriz.setLed(0, raquete + i, 7, true);
  }
}

// Animação de fim de jogo e reinício
void perdeu() {
  for (int b = 0; b < 3; b++) {
    for (int l = 0; l < 8; l++)
      for (int c = 0; c < 8; c++)
        matriz.setLed(0, l, c, true);
    delay(150);
    matriz.clearDisplay(0);
    delay(150);
  }
  // reinicia a bola no centro
  bolaX = 3; bolaY = 3;
  dirX = 1; dirY = 1;
}

Passo a passo

  1. Ligue a matriz ao Arduino

    DIN no D11, CS no D10, CLK no D13. VCC no 5V e GND no GND.

  2. Conecte o joystick

    O eixo vertical (VRy) no A1, além de VCC no 5V e GND no GND. Neste jogo usamos só o eixo vertical para mover a raquete.

  3. Instale a biblioteca LedControl

    Pelo Gerenciador de Bibliotecas da IDE do Arduino.

  4. Envie o código e jogue

    Carregue o código. A bolinha vai começar a quicar — mova o joystick para cima e para baixo para rebater com a raquete. Se errar, a tela pisca e o jogo recomeça.

  5. Ajuste a dificuldade

    Mude o valor do delay(220) no código: menor deixa o jogo mais rápido e difícil, maior deixa mais lento e fácil.

Vá além

Com o Pong funcionando, você pode incrementar: adicionar um placar (mostrando quantas vezes rebateu), aumentar a velocidade da bola conforme o jogo avança, ou usar o botão do joystick para pausar. A matriz de LED também serve para muitos outros projetos: relógios, letreiros rolantes com texto, animações e até outros jogos como a "cobrinha" (Snake). É um componente que rende muita criatividade.

Gostou do projeto? Monte o seu Todos os componentes disponíveis com entrega para todo o Brasil
Ver produtos →