산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

박하 사탕 발가락 게임 방문 카드

구성품 및 소모품

Microchip Technology ATmega328
× 1
LED 스트립, NeoPixel 디지털 RGB
× 1
촉각 스위치, 상단 작동
× 1
JLCPCB 맞춤형 PCB
× 1
Arduino UNO
× 1

필요한 도구 및 기계

납땜 인두(일반)
납땜 와이어, 무연
납땜 플럭스, 납땜
10 Pc. 점퍼 와이어 키트, 길이 5cm

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

안녕하세요

이 튜토리얼에서는 방문/명함을 만드는 방법을 보여 드리겠습니다. 단순한 방문 카드가 아닙니다. 이것은 PCB입니다. 하지만 일반 방문 카드처럼. EDISON SCIENCE CORNER 이름, 로고, 소셜 미디어 아이콘 및 QR 코드를 볼 수 있습니다. QR코드는 제 유튜브 채널로 연결됩니다. 그러나 반대편에는 회로가 있습니다. 이것은 틱택토입니다. 게임 회로. Tic tac toe는 2인용 게임입니다. X O 게임이라고도 함 . X 또는 O로 3x3 격자의 공간을 차례로 표시하는 두 명의 플레이어. 가로, 세로 또는 대각선 행에 세 개의 표시를 배치하는 데 성공한 플레이어가 승자가 됩니다. 대부분의 시간 게임은 무승부입니다. 여기에서 X와 O를 색상으로 대체하고 기존의 3*3도 4*4로 변경했습니다. 따라서 각 스위치는 총 16개의 LED와 16개의 스위치가 해당 LED를 나타냅니다. 플레이어 1은 녹색이고 플레이어 2는 빨간색입니다. 그게 다야.

이제 만드는 방법을 살펴보겠습니다.

1단계:PCB 설계 및 인쇄

이것이 제가 easyeda를 사용하여 설계한 게임 회로입니다. . 여기에서 atmega328을 사용하고 있습니다. 이 프로젝트의 핵심으로. 그런 다음 회로를 PCB로 변환했습니다. 89mm*50mm 크기의 PCB를 디자인한 이유는 이것이 명함의 표준 크기이기 때문입니다. easy의 이미지 삽입 도구를 사용하여 디자인을 만들었습니다. 이것은 당신의 아이디어로 만들 수 있는 예술에 관한 것입니다. PCB를 설계한 후 Gerber 파일을 다운로드했습니다. 그 다음 나는 jlcpcb.com에 갔다. 나는 5개의 PCB에 2$만 제공하기 때문에 JLCPCB를 선택합니다. PCB를 주문하려면 지금 주문을 클릭하고 Gerber 파일을 선택하십시오. 업로드 후 블랙 색상 0.8mm 두께를 선택하여 주문했습니다. 2주 후에 나는 PCB를 받았습니다. PCB의 두께는 0.8mm에 불과하지만 품질은 예상대로 완벽합니다.

2단계:필요한 구성 요소

ATMEGA328P-AU* 1

0805 커패시터 22pf *2

0805 커패시터 100nF* 2

SMD WS2812B-B*16

0805 LED SMD* 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로 명함을 만들었습니다. 링크에서 회로, 코드, 거버를 다운로드할 수 있습니다. 제 튜토리얼에서 무엇인가를 즐기고 배웠기를 바랍니다.

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 코드
  • 코드C/C++
    //edison science corner#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 키;int w=0;const 바이트 행 =4; // 4행 const 바이트 COLS =4; //4개의 열//키패드 버튼의 기호 정의char hexaKeys[ROWS][COLS] ={ {'1','2','3','A'}, {'4','5' ,'6','B'}, {'7','8','9','C'}, {'*','0','#','D'}};바이트 rowPins[ 행] ={A0,A1,A2,A3}; //키패드바이트의 행 핀아웃에 연결 colPins[COLS] ={A4,A5,2,3}; // 키패드의 열 핀아웃에 연결Keypad customKeypad =Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 무효 설정(){ Serial.begin(9600); LEDS.addLeds(LED, NUM_LEDS); FastLED.setBrightness(밝기); for(int m=0;m<3;m++) { leds[0].setRGB(0, 255, 0); leds[1].setRGB(0, 255, 0); led[2].setRGB(0, 255, 0); leds[3].setRGB(0, 255, 0); leds[4].setRGB(0, 255, 0); led[5].setRGB(0, 255, 0); leds[6].setRGB(0, 255,0); led[7].setRGB(0, 255, 0); leds[8].setRGB(0, 255, 0); led[9].setRGB(0, 255, 0); leds[10].setRGB(0, 255, 0); led[11].setRGB(0, 255, 0); led[12].setRGB(0, 255, 0); led[13].setRGB(0, 255, 0); led[14].setRGB(0, 255, 0); led[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); led[7].setRGB(0, 0, 225); leds[8].setRGB(0, 0, 225); led[9].setRGB(0, 0, 225); led[10].setRGB(0, 0, 225); led[11].setRGB(0, 0, 225); led[12].setRGB(0, 0, 225); led[13].setRGB(0, 0, 225); led[14].setRGB(0, 0, 225); led[15].setRGB(0, 0, 225); FastLED.show(); 지연(500); } FastLED.clear(); FastLED.show();} 무효 루프(){ 키 =customKeypad.getKey(); if (키 &&플레이어==1) { Serial.println("\nP1"); Serial.println(키); n=숫자(키); Serial.println(n); leds[n].setRGB(0, 255, 0); FastLED.show(); a[n]='X'; Serial.println(a[n]); w=체크(a,n); if(w==1) { Serial.println("플레이어 1이 승리했습니다!"); 동안(1) { leds[0].setRGB(0, 255, 0); leds[1].setRGB(0, 255, 0); led[2].setRGB(0, 255, 0); leds[3].setRGB(0, 255, 0); leds[4].setRGB(0, 255, 0); led[5].setRGB(0, 255, 0); leds[6].setRGB(0, 255,0); led[7].setRGB(0, 255, 0); leds[8].setRGB(0, 255, 0); led[9].setRGB(0, 255, 0); leds[10].setRGB(0, 255, 0); led[11].setRGB(0, 255, 0); led[12].setRGB(0, 255, 0); led[13].setRGB(0, 255, 0); led[14].setRGB(0, 255, 0); led[15].setRGB(0, 255, 0); FastLED.show(); 지연(500); FastLED.clear(); FastLED.show(); 지연(500); } } 플레이어++; 지연(1000); } 지연(20); 키 =customKeypad.getKey(); if (키 &&플레이어==2) { Serial.println("\nP2"); Serial.println(키); n=숫자(키); Serial.println(n); leds[n].setRGB(0, 0, 225); FastLED.show(); a[n]='0'; Serial.println(a[n]); w=체크(a,n); if(w==2) { Serial.println("플레이어 2가 승리했습니다!"); 동안(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); led[7].setRGB(0, 0, 225); leds[8].setRGB(0, 0, 225); led[9].setRGB(0, 0, 225); led[10].setRGB(0, 0, 225); led[11].setRGB(0, 0, 225); led[12].setRGB(0, 0, 225); led[13].setRGB(0, 0, 225); led[14].setRGB(0, 0, 225); led[15].setRGB(0, 0, 225); FastLED.show(); 지연(500); FastLED.clear(); FastLED.show(); 지연(500); } } e++; 플레이어--; 지연(1000); } if(e==8) { Serial.println("게임 추첨"); 동안(1) { leds[0].setRGB(255, 0, 0); leds[1].setRGB(255, 0, 0); leds[2].setRGB(255, 0, 0); led[3].setRGB(255, 0, 0); leds[4].setRGB(255, 0, 0); led[5].setRGB(255, 0, 0); leds[6].setRGB(255, 0, 0); led[7].setRGB(255, 0, 0); leds[8].setRGB(255, 0, 0); led[9].setRGB(255, 0, 0); leds[10].setRGB(255, 0, 0); led[11].setRGB(255, 0, 0); led[12].setRGB(255, 0, 0); led[13].setRGB(255, 0, 0); led[14].setRGB(255, 0, 0); led[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(키 =='A') 반환 3; if(keyn =='4') 반환 4; if(keyn =='5') return 5; if(keyn =='6') 반환 6; if(keyn =='B') return 7; if(keyn =='7') 반환 8; if(keyn =='8') 반환 9; if(keyn =='9') 반환 10; if(keyn =='C') 반환 11; if(키 =='*') 반환 12; if(keyn =='0') 반환 13; if(keyn =='#') return 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. MPU-6050을 사용한 Arduino 자이로스코프 게임
    2. 다중 온도 센서
    3. DIY 37 LED 룰렛 게임
    4. Arduino 게임 컨트롤러
    5. 터치스크린이 있는 Arduino Due TIC TAC TOE
    6. 모션센스
    7. 3D 프린터 화재 안전
    8. 픽셀 체이서 게임
    9. Arduino 반발 전자기 부상
    10. CoroFence - 열 감지기🖖