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

井字游戏名片

组件和用品

Microchip Technology ATmega328
× 1
LED 灯条,NeoPixel Digital RGB
× 1
触觉开关,顶部驱动
× 1
JLCPCB定制PCB
× 1
Arduino UNO
× 1

必要的工具和机器

烙铁(通用)
焊锡丝,无铅
助焊剂,焊接
10 件。跳线套件,5 厘米长

应用和在线服务

Arduino IDE

关于这个项目

你好

在本教程中,我将向您展示如何制作名片/名片。不仅仅是一张名片。这是一个PCB 但就像普通的名片一样。您可以看到爱迪生科学角的名称、徽标、社交媒体图标和二维码。二维码会将您引导至我的 YouTube 频道。但在另一边,你可以看到一个电路。这是一个井字游戏 游戏电路。井字游戏是一个两人游戏。也称为 X O 游戏 .两名玩家轮流用 X 或 O 在一个三乘三的网格中标记空间。成功将三个标记放置在水平、垂直或对角线上的玩家是赢家。大部分时间游戏都会平局。这里我用颜色替换了X和O,也把传统的3*3换成了4*4。所以一共16个led,16个开关,每个开关代表对应的led。玩家 1 为绿色,玩家 2 为红色。就是这样,我想你明白了。

现在让我们看看如何制作这个。

第 1 步:PCB 的设计和印刷

这是我使用 easyeda 设计的游戏电路 .我在这里使用 atmega328 作为这个项目的核心。然后我将电路转换成PCB。我设计的PCB尺寸为89mm*50mm,因为这是名片的标准尺寸。我使用easyeda的插入图像工具进行设计。这只是关于您可以用您的想法创作的艺术。设计好 PCB 后,我下载了 Gerber 文件。然后我去了jlcpcb.com。我选择 JLCPCB 是因为他们只提供 5 块 PCB 的 2 美元。要订购 PCB 只需单击“立即订购”并选择您的 Gerber 文件。上传后,我选择了黑色 0.8mm 厚度并下订单。 2 周后我收到了 PCB。 PCB 的厚度只有 0.8 毫米,但质量如我所料。

第 2 步:所需组件

ATMEGA328P-AU* 1

0805电容22pf*2

0805电容100nF*2

贴片WS2812B-B*16

0805 LED贴片* 2

0805电阻1K*3

0805电阻10K 1

16MHZ*1

微型USB母头*1

从这里下载 BOM

第 3 步:焊接

抓住所有组件后,我开始焊接

我从微型 USB 端口开始。然后我焊接了所有其他组件。焊接控制电路后,我开始焊接新像素 LED,完成后焊接相应的开关。 1 小时后,我完成了所有焊接,现在我们的 PCB 看起来像这样。

第 4 步:编程

完成焊接后,我连接了 USB 电缆并进行了测试。现在是上传代码的时候了。我将 spi 引脚连接到 isp Arduino 并上传了草图

从这里下载代码

第 5 步:玩耍和享受

这就是我用 4*4 tic tac toe 游戏 PCB 制作名片的方法。您可以从链接下载电路、代码、gerbers。希望您喜欢并从我的教程中学到了一些东西。

代码

  • 代码
代码C/C++
//爱迪生科学角#include #include #define LED_PIN 5#define NUM_LEDS 16#define LED_TYPE WS2812B#define COLOR_ORDER GBR#define BRIGHTNESS 30CRGB leds[NUM_LEDS];int player=1;int n,i,e=0,j=0;char a[16]={'1','2','3','4','5','6','7', '8','9','10','11','12','13','14','15','16'};char key;int w=0;const byte ROWS =4; //四行常量字节 COLS =4; //四列//定义键盘按钮上的镲字char hexaKeys[ROWS][COLS] ={ {'1','2','3','A'}, {'4','5' ,'6','B'}, {'7','8','9','C'}, {'*','0','#','D'}};byte rowPins[行] ={A0,A1,A2,A3}; //连接到keypadbyte的行引脚 colPins[COLS] ={A4,A5,2,3}; //连接到keypadKeypad的列管脚customKeypad =Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup(){ Serial.begin(9600); LEDS.addLeds(leds, NUM_LEDS); FastLED.setBrightness(BRIGHTNESS); for(int m=0;m<3;m++) { leds[0].setRGB(0, 255, 0); leds[1].setRGB(0, 255, 0); leds[2].setRGB(0, 255, 0); leds[3].setRGB(0, 255, 0); leds[4].setRGB(0, 255, 0); leds[5].setRGB(0, 255, 0); leds[6].setRGB(0, 255,0); leds[7].setRGB(0, 255, 0); leds[8].setRGB(0, 255, 0); leds[9].setRGB(0, 255, 0); leds[10].setRGB(0, 255, 0); leds[11].setRGB(0, 255, 0); leds[12].setRGB(0, 255, 0); leds[13].setRGB(0, 255, 0); leds[14].setRGB(0, 255, 0); leds[15].setRGB(0, 255, 0); FastLED.show();延迟(500); leds[0].setRGB(0, 0, 225); leds[1].setRGB(0, 0, 225); leds[2].setRGB(0, 0, 225); leds[3].setRGB(0, 0, 225); leds[4].setRGB(0, 0, 225); leds[5].setRGB(0, 0, 225); leds[6].setRGB(0, 0, 225); leds[7].setRGB(0, 0, 225); leds[8].setRGB(0, 0, 225); leds[9].setRGB(0, 0, 225); leds[10].setRGB(0, 0, 225); leds[11].setRGB(0, 0, 225); leds[12].setRGB(0, 0, 225); leds[13].setRGB(0, 0, 225); leds[14].setRGB(0, 0, 225); leds[15].setRGB(0, 0, 225); FastLED.show();延迟(500); FastLED.clear(); FastLED.show();} void loop(){ key =customKeypad.getKey(); if (key &&player==1) { Serial.println("\nP1"); Serial.println(key); n=数字(键); Serial.println(n); leds[n].setRGB(0, 255, 0); FastLED.show(); a[n]='X'; Serial.println(a[n]); w=check(a,n); if(w==1) { Serial.println("玩家 1 获胜!"); while(1) { leds[0].setRGB(0, 255, 0); leds[1].setRGB(0, 255, 0); leds[2].setRGB(0, 255, 0); leds[3].setRGB(0, 255, 0); leds[4].setRGB(0, 255, 0); leds[5].setRGB(0, 255, 0); leds[6].setRGB(0, 255,0); leds[7].setRGB(0, 255, 0); leds[8].setRGB(0, 255, 0); leds[9].setRGB(0, 255, 0); leds[10].setRGB(0, 255, 0); leds[11].setRGB(0, 255, 0); leds[12].setRGB(0, 255, 0); leds[13].setRGB(0, 255, 0); leds[14].setRGB(0, 255, 0); leds[15].setRGB(0, 255, 0); FastLED.show();延迟(500); FastLED.clear(); FastLED.show();延迟(500);播放器++;延迟(1000); } 延迟(20); key =customKeypad.getKey(); if (key &&player==2) { Serial.println("\nP2"); Serial.println(key); n=数字(键); Serial.println(n); leds[n].setRGB(0, 0, 225); FastLED.show(); [n]='0'; Serial.println(a[n]); w=check(a,n); if(w==2) { Serial.println("玩家 2 获胜!"); while(1) { leds[0].setRGB(0, 0, 225); leds[1].setRGB(0, 0, 225); leds[2].setRGB(0, 0, 225); leds[3].setRGB(0, 0, 225); leds[4].setRGB(0, 0, 225); leds[5].setRGB(0, 0, 225); leds[6].setRGB(0, 0, 225); leds[7].setRGB(0, 0, 225); leds[8].setRGB(0, 0, 225); leds[9].setRGB(0, 0, 225); leds[10].setRGB(0, 0, 225); leds[11].setRGB(0, 0, 225); leds[12].setRGB(0, 0, 225); leds[13].setRGB(0, 0, 225); leds[14].setRGB(0, 0, 225); leds[15].setRGB(0, 0, 225); FastLED.show();延迟(500); FastLED.clear(); FastLED.show();延迟(500); } } e++;球员--;延迟(1000); } if(e==8) { Serial.println("游戏抽奖"); while(1) { leds[0].setRGB(255, 0, 0); leds[1].setRGB(255, 0, 0); leds[2].setRGB(255, 0, 0); leds[3].setRGB(255, 0, 0); leds[4].setRGB(255, 0, 0); leds[5].setRGB(255, 0, 0); leds[6].setRGB(255, 0, 0); leds[7].setRGB(255, 0, 0); leds[8].setRGB(255, 0, 0); leds[9].setRGB(255, 0, 0); leds[10].setRGB(255, 0, 0); leds[11].setRGB(255, 0, 0); leds[12].setRGB(255, 0, 0); leds[13].setRGB(255, 0, 0); leds[14].setRGB(255, 0, 0); leds[15].setRGB(255, 0, 0); FastLED.show();延迟(1000); FastLED.clear(); FastLED.show();延迟(500); } } delay(20);}int number(char keyn){ if(keyn =='1') return 0; if(keyn =='2') 返回 1; if(keyn =='3') 返回 2; if(key =='A') 返回 3; if(keyn =='4') 返回 4; if(keyn =='5') 返回 5; if(keyn =='6') 返回 6; if(keyn =='B') 返回 7; if(keyn =='7') 返回 8; if(keyn =='8') 返回 9; if(keyn =='9') 返回 10; if(keyn =='C') 返回 11; if(key =='*') 返回 12; if(keyn =='0') 返回 13; if(keyn =='#') 返回 14; if(keyn =='D') return 15;}int check(char a[16],int n){ if(a[0]=='X' &&a[1]=='X' &&a[ 2]=='X' &&a[3]=='X') 返回 1; if(a[0]=='0' &&a[1]=='0' &&a[2]=='0' &&a[3]=='0') return 2; if(a[0]=='X' &&a[4]=='X' &&a[8]=='X' &&a[12]=='X') return 1; if(a[0]=='0' &&a[4]=='0' &&a[8]=='0' &&a[12]=='0') return 2; if(a[0]=='X' &&a[5]=='X' &&a[10]=='X' &&a[15]=='X') return 1; if(a[0]=='0' &&a[5]=='0' &&a[10]=='0' &&a[15]=='0') return 2; if(a[1]=='X' &&a[5]=='X' &&a[9]=='X' &&a[13]=='X') return 1; if(a[1]=='0' &&a[5]=='0' &&a[9]=='0' &&a[13]=='0') return 2; if(a[2]=='X' &&a[6]=='X' &&a[10]=='X' &&a[14]=='X') return 1; if(a[2]=='0' &&a[6]=='0' &&a[10]=='0' &&a[14]=='0') return 2; if(a[3]=='X' &&a[7]=='X' &&a[11]=='X' &&a[15]=='X') return 1; if(a[3]=='0' &&a[7]=='0' &&a[11]=='0' &&a[15]=='0') return 2; if(a[3]=='X' &&a[6]=='X' &&a[9]=='X' &&a[12]=='X') return 1; if(a[3]=='0' &&a[6]=='0' &&a[9]=='0' &&a[12]=='0') return 2; if(a[4]=='X' &&a[5]=='X' &&a[6]=='X' &&a[7]=='X') return 1; if(a[4]=='0' &&a[5]=='0' &&a[6]=='0' &&a[7]=='0') return 2; if(a[8]=='X' &&a[9]=='X' &&a[10]=='X' &&a[11]=='X') return 1; if(a[8]=='0' &&a[9]=='0' &&a[10]=='0' &&a[11]=='0') return 2; if(a[12]=='X' &&a[13]=='X' &&a[14]=='X' &&a[15]=='X') return 1; if(a[12]=='0' &&a[13]=='0' &&a[14]=='0' &&a[15]=='0') return 2;}

示意图


制造工艺

  1. Arduino Gyroscope Game with MPU-6050
  2. 多温度传感器
  3. DIY 37 LED 轮盘游戏
  4. Arduino 游戏控制器
  5. Arduino Due TIC TAC TOE 带触摸屏
  6. MotionSense
  7. 3D 打印机消防安全
  8. 像素追逐游戏
  9. Arduino 排斥电磁悬浮
  10. 遥控夹爪机器人
  11. Arduino Powered Weather Balloon Datalogger
  12. CoroFence - 热探测器🖖