Tarjeta de visita PCB 4×4 Tic Tac Toe personalizada – Guía de diseño, construcción y código
Resumen
Este tutorial te guía en la creación de una PCB del tamaño de una tarjeta de visita que funciona como un juego de Tic Tac Toe 4×4. El anverso muestra el logotipo de EDISON SCIENCE CORNER, iconos de redes sociales y un código QR que enlaza a un canal de YouTube. Al dar la vuelta a la tarjeta, se revela un circuito de juego completamente funcional alimentado por un ATmega328, LEDs NeoPixel y pulsadores táctiles.
Componentes y suministros
| Ítem | Cantidad |
|---|---|
| Microchip ATmega328P‑AU | 1 |
| Tira LED RGB NeoPixel (WS2812B) | 16 (4×4) |
| Pulsadores táctiles, accionamiento superior | 16 |
| PCB personalizada (JLCPCB) | 1 |
| Arduino UNO (para programación) | 1 |
| USB Micro‑Hembra | 1 |
| Condensadores 22 pF (0805) | 2 |
| Condensadores 100 nF (0805) | 2 |
| Resistencias 1 kΩ (0805) | 3 |
| Resistencia 10 kΩ (0805) | 1 |
| Cristal 16 MHz | 1 |
| LEDs (SMD 0805) | 2 |
Herramientas y máquinas necesarias
- Soldador (genérico)
- Hilo de soldadura sin plomo
- Flux de soldadura
- Kit de cables puente (5 cm, 10 uds.)
Aplicaciones y servicios en línea
- Arduino IDE
- EasyEDA – Plataforma de diseño de PCB
- JLCPCB – Fabricación de PCB a bajo costo (desde $2 por 5 placas)
Paso 1: Diseño e impresión de la PCB
Utilizando EasyEDA, diseñé una placa de 89 mm × 50 mm (tamaño estándar de tarjeta de visita) y tracé una matriz de Tic Tac Toe 4×4. El esquemático emplea un ATmega328 como microcontrolador principal e integra 16 LEDs WS2812B y 16 pulsadores táctiles. Tras finalizar el layout, exporté los archivos Gerber y los subí a JLCPCB. Con un grosor de 0,8 mm y color negro, la PCB llegó en dos semanas, cumpliendo la calidad esperada para proyectos de aficionados.
Paso 2: Reunir componentes
Consulta la lista de componentes anterior. Todas las piezas son comunes, económicas y pueden adquirirse en distribuidores como Digi‑Key, Mouser o AliExpress.
Paso 3: Soldadura
Comienza soldando el conector USB micro‑hembra, luego coloca el ATmega328 y los componentes pasivos de soporte. A continuación, suelda la tira LED NeoPixel y alinea cada LED con su pulsador correspondiente. Suelda cuidadosamente los 16 pulsadores, asegurando la orientación correcta. El montaje completo lleva aproximadamente una hora para un aficionado experimentado.
Paso 4: Programación
Conecta la placa al PC vía USB. Sube el siguiente sketch usando el Arduino IDE:
El sketch inicializa el array de 16 LEDs, gestiona las pulsaciones del teclado matricial 4×4 e implementa un detector de victoria simple. El jugador 1 usa LEDs verdes, el jugador 2 LEDs azules. En caso de victoria, la placa parpadea en el color ganador; si se llena sin ganador, parpadea en rojo.
Paso 5: ¡Juega y disfruta!
Da la vuelta a la tarjeta para revelar el lado del juego. Cada pulsación ilumina el LED correspondiente. El juego sigue las reglas clásicas del Tic Tac Toe pero con una cuadrícula 4×4 e indicadores de color. Disfruta de un juego portátil único que sirve como inicio de conversación en conferencias y eventos de networking.
Código
A continuación se muestra el sketch completo de Arduino (C/C++) utilizado en este proyecto. Incluye manejo del teclado, control de LEDs y lógica de victoria.
#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); // Encender todos los LEDs en verde, luego azul, para confirmar funcionamiento 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
Todos los archivos de diseño, BOM y código están disponibles para descarga.
Proceso de manufactura
- Construye un Juego Giroscópico en Tiempo Real con Arduino Nano y Sensor MPU-6050
- Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente
- Construye tu Propio Juego de Ruleta de 37 LEDs con Arduino Nano
- Mando USB para juegos DIY con Arduino – Construye tu propio gamepad de alto rendimiento
- Construye un Tres en Raya (Tic-Tac-Toe) Táctil en Arduino Due
- MotionSense: Detección inteligente de intrusos con Arduino y ESP8266
- Prevención de Incendios en Impresoras 3D: Sistema de Seguridad con Sensor Inteligente
- Pixel Chaser: Juego LED Interactivo de Un Toque con Arduino Nano
- Levitación magnética repulsiva con Arduino: Circuito simple y guía DIY
- Robot pinza controlado remotamente para manipulación de precisión
- CoroFence: Detector Térmico Avanzado con Sensor PIR e Integración IoT