Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Cartão de Visita PCB 4×4 Jogo da Velha Personalizado – Guia de Design, Montagem e Código

Visão Geral

Este tutorial ensina a criar um PCB no tamanho de um cartão de visita que funciona como um jogo da velha 4×4. A frente exibe o logotipo da EDISON SCIENCE CORNER, ícones de redes sociais e um QR code que leva ao canal do YouTube. No verso, revela-se um circuito de jogo totalmente funcional alimentado por um ATmega328, LEDs NeoPixel e chaves táteis.

Componentes e Materiais

ItemQtd
Microchip ATmega328P‑AU1
Fita de LED RGB NeoPixel (WS2812B)16 (4×4)
Chaves Táteis, Acionamento Superior16
PCB Personalizado (JLCPCB)1
Arduino UNO (para programação)1
Conector USB Micro‑Fêmea1
Capacitores 22 pF (0805)2
Capacitores 100 nF (0805)2
Resistores 1 kΩ (0805)3
Resistor 10 kΩ (0805)1
Cristal 16 MHz1
LEDs (SMD 0805)2

Ferramentas e Máquinas Necessárias

Aplicativos e Serviços Online

Passo 1: Projetar e Imprimir o PCB

Usando o EasyEDA, projetei uma placa de 89 mm × 50 mm (tamanho padrão de cartão de visita) e roteei uma matriz 4×4 para o jogo da velha. O esquemático usa o ATmega328 como microcontrolador principal e integra 16 LEDs WS2812B e 16 chaves táteis. Após finalizar o layout, exportei os arquivos Gerber e enviei para a JLCPCB. Com espessura de 0,8 mm e cor preta, os PCBs chegaram em duas semanas, com qualidade esperada para projetos de hobby.

Passo 2: Reunir os Componentes

Consulte a lista de componentes acima. Todas as peças são comuns, baratas e podem ser adquiridas em distribuidores como Digi‑Key, Mouser ou AliExpress.

Passo 3: Soldagem

Comece soldando o conector USB micro‑fêmea, depois posicione o ATmega328 e os componentes passivos de suporte. Em seguida, solde a fita de LED NeoPixel e alinhe cada LED com sua chave tátil correspondente. Solde cuidadosamente todas as 16 chaves, garantindo a orientação correta. A montagem completa leva cerca de uma hora para um hobbyista experiente.

Passo 4: Programação

Conecte a placa ao PC via USB. Carregue o sketch abaixo usando a Arduino IDE:

Baixar Código

O sketch inicializa o array de 16 LEDs, gerencia pressionamentos das teclas da matriz 4×4 e implementa um detector de vitória simples. O jogador 1 usa LEDs verdes, o jogador 2 usa LEDs azuis. Em caso de vitória, a placa pisca na cor do vencedor; se o tabuleiro encher sem vencedor, pisca em vermelho.

Passo 5: Jogar e Divertir-se

Vire o cartão para revelar o lado do jogo. Cada pressionamento de botão acende o LED correspondente. O jogo segue as regras clássicas do jogo da velha, mas com grade 4×4 e indicadores de cor. Desfrute de um jogo portátil e único que também serve como quebra-gelo em conferências e eventos de networking.

Código

Abaixo está o sketch completo do Arduino (C/C++) usado neste projeto. Inclui manipulação do teclado, controle dos LEDs e lógica de vitória.

#include <Keypad.h> 
#include <FastLED.h> 
#define LED_PIN 5 
#define NUM_LEDS 16 
#define LED_TYPE WS2812B 
#define COLOR_ORDER GBR 
#define BRIGHTNESS 30 
CRGB leds[NUM_LEDS]; 
int player = 1; 
char board[16] = {'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'}; 
char key; 
int moveCount = 0; 
const byte ROWS = 4; 
const byte COLS = 4; 
char hexaKeys[ROWS][COLS] = {{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'*','0','#','D'}}; 
byte rowPins[ROWS] = {A0,A1,A2,A3}; 
byte colPins[COLS] = {A4,A5,2,3}; 
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 
void setup(){ 
  Serial.begin(9600); 
  LEDS.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS); 
  FastLED.setBrightness(BRIGHTNESS); 
  // Acende todos os LEDs em verde, depois azul, para confirmar funcionamento
  for(int i=0;i<3;i++){ 
    for(int j=0;j<NUM_LEDS;j++) leds[j] = (i%2==0) ? CRGB::Green : CRGB::Blue; 
    FastLED.show(); 
    delay(500); 
  } 
  FastLED.clear(); 
} 
void loop(){ 
  key = customKeypad.getKey(); 
  if(key && player==1){ 
    int idx = keyToIndex(key); 
    leds[idx] = CRGB::Green; 
    FastLED.show(); 
    board[idx] = 'X'; 
    if(checkWinner('X')){ 
      announceWinner(1); 
    } 
    player = 2; 
    delay(1000); 
  } 
  if(key && player==2){ 
    int idx = keyToIndex(key); 
    leds[idx] = CRGB::Blue; 
    FastLED.show(); 
    board[idx] = 'O'; 
    if(checkWinner('O')){ 
      announceWinner(2); 
    } 
    player = 1; 
    moveCount++; 
    delay(1000); 
  } 
  if(moveCount==8){ 
    announceDraw(); 
  } 
} 
int keyToIndex(char k){ 
  switch(k){ 
    case '1': return 0; 
    case '2': return 1; 
    case '3': return 2; 
    case 'A': return 3; 
    case '4': return 4; 
    case '5': return 5; 
    case '6': return 6; 
    case 'B': return 7; 
    case '7': return 8; 
    case '8': return 9; 
    case '9': return 10; 
    case 'C': return 11; 
    case '*': return 12; 
    case '0': return 13; 
    case '#': return 14; 
    case 'D': return 15; 
  } 
  return -1; 
} 
bool checkWinner(char mark){ 
  const int lines[10][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}, 
    {0,4,8,12},{1,5,9,13},{2,6,10,14},{3,7,11,15}, 
    {0,5,10,15},{3,6,9,12}}; 
  for(auto &line: lines){ 
    if(board[line[0]]==mark && board[line[1]]==mark && board[line[2]]==mark && board[line[3]]==mark){ 
      return true; 
    } 
  } 
  return false; 
} 
void announceWinner(int p){ 
  CRGB color = (p==1) ? CRGB::Green : CRGB::Blue; 
  while(true){ 
    for(int i=0;i<NUM_LEDS;i++) leds[i] = color; 
    FastLED.show(); 
    delay(500); 
    FastLED.clear(); 
    FastLED.show(); 
    delay(500); 
  } 
} 
void announceDraw(){ 
  while(true){ 
    for(int i=0;i<NUM_LEDS;i++) leds[i] = CRGB::Red; 
    FastLED.show(); 
    delay(1000); 
    FastLED.clear(); 
    FastLED.show(); 
    delay(500); 
  } 
}

Esquemáticos

Cartão de Visita PCB 4×4 Jogo da Velha Personalizado – Guia de Design, Montagem e Código

Todos os arquivos de design, BOM e código estão disponíveis para download.

Processo de manufatura

  1. Construa um Jogo em Tempo Real com Giroscópio: Arduino Nano + Sensor MPU-6050
  2. Sistema Multi-Posição de Sensores de Temperatura para Integração em Casa Inteligente
  3. Construa Seu Próprio Jogo de Roleta com 37 LEDs e Arduino Nano
  4. Controle USB para Jogos DIY com Arduino – Construa Seu Próprio Gamepad de Alto Desempenho
  5. Construa um Jogo da Velha Touchscreen no Arduino Due
  6. MotionSense: Detecção Inteligente de Intrusão com Arduino e ESP8266
  7. Prevenção de Incêndio em Impressoras 3D: Sistema de Segurança com Sensor Inteligente
  8. Pixel Chaser: Jogo LED Interativo de Um Toque com Arduino Nano
  9. Levitação Magnética Repulsiva com Arduino: Circuito Simples e Guia DIY
  10. CoroFence Detector Térmico: Sensor PIR Avançado & Integração IoT