亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

定制 4×4 井字棋名片 PCB – 设计、制作与代码指南

项目概览

本教程将指导您制作一张名片大小的定制 PCB,它既是名片,又是一个功能齐全的 4×4 井字棋游戏。正面印有 EDISON SCIENCE CORNER 徽标、社交媒体图标及链接 YouTube 频道的二维码;翻面则是由 ATmega328P、NeoPixel LED 与触觉开关组成的游戏电路。

元器件与物料清单

元件数量
Microchip ATmega328P‑AU1
NeoPixel RGB LED 灯带 (WS2812B)16 (4×4)
轻触开关,顶部触发16
定制 PCB (JLCPCB)1
Arduino UNO (用于烧录)1
USB Micro 母座1
电容 22 pF (0805)2
电容 100 nF (0805)2
电阻 1 kΩ (0805)3
电阻 10 kΩ (0805)1
16 MHz 晶振1
LED (SMD 0805)2

所需工具与设备

软件与在线服务

步骤 1: PCB 设计与打样

使用 EasyEDA 设计了一块 89 mm × 50 mm 的标准名片大小板卡,布局 4×4 井字棋矩阵。原理图以 ATmega328 为核心,集成 16 颗 WS2812B LED 与 16 个轻触开关。完成布局后导出 Gerber 文件上传至 JLCPCB,选用 0.8 mm 黑色板厚,两周收到成品,质量符合爱好者项目预期。

步骤 2: 准备元器件

参考上表清单,所有零件均为常见且低价,可从 Digi‑Key、Mouser 或速卖通等渠道采购。

步骤 3: 焊接组装

先焊接 USB Micro 母座,再放置 ATmega328 及其外围无源器件。随后焊接 NeoPixel 灯带,并将每颗 LED 与对应轻触开关对齐。仔细焊接全部 16 个开关,确保方向正确。熟练爱好者约需 1 小时完成全套焊接。

步骤 4: 程序烧录

通过 USB 连接电脑,在 Arduino IDE 中上传以下草图:

下载代码

草图初始化 16 LED 阵列,处理 4×4 键盘矩阵按键,并实现简单胜负判定。玩家 1 使用绿色 LED,玩家 2 使用蓝色 LED。获胜时全板闪烁对应颜色;平局则闪烁红色。

步骤 5: 畅玩体验

翻到游戏面,每次按键点亮对应 LED。规则遵循经典井字棋,但采用 4×4 网格与颜色指示。这款便携小游戏既是独特的名片,也是会议、社交场合的绝佳话题开启者。

完整代码

下方为本项目使用的完整 Arduino 草图 (C/C++),包含键盘处理、LED 控制与胜负逻辑。

#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); 
  // 绿/蓝交替全亮确认功能 
  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); 
  } 
}

原理图

定制 4×4 井字棋名片 PCB – 设计、制作与代码指南

所有设计文件、BOM 与代码均可下载。

制造工艺

  1. Arduino Nano 与 MPU-6050 构建实时陀螺仪游戏
  2. 多位置温度传感器系统,助力智能家居集成
  3. 用 Arduino Nano 自制 37 灯珠轮盘赌游戏机
  4. DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄
  5. Arduino Due 触摸屏井字棋游戏 — 人机对战
  6. MotionSense:基于 Arduino 与 ESP8266 的智能入侵检测系统
  7. 3D 打印机防火卫士:智能传感器安全系统
  8. Pixel Chaser:Arduino Nano 单键 NeoPixel 追逐小游戏
  9. Arduino 简易排斥式磁悬浮:电路与 DIY 指南
  10. 进阶遥控夹爪机器人:精密抓取 DIY 指南
  11. 高性能 Arduino 气象气球数据记录器
  12. CoroFence 热成像检测器:Panasonic GridEye + PIR + IoT 集成