Cartão de visita do jogo Tic Tac Toe
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Ferramentas e máquinas necessárias
| ||||
| ||||
| ||||
|
Aplicativos e serviços online
|
Sobre este projeto
Olá
Neste tutorial, vou mostrar como fazer um cartão de visita / visita. Não apenas um cartão de visita. Este é um PCB mas como um cartão de visita normal. Você pode ver o nome, logotipo, ícones de mídia social e um código QR da EDISON SCIENCE CORNER. O código QR irá direcioná-lo para o meu canal no youtube. Mas do lado oposto, você pode ver um circuito. Este é um jogo da velha circuito de jogo. O jogo da velha é um jogo para dois jogadores. Também conhecido como X O Game . dois jogadores que se revezam marcando os espaços em uma grade de três por três com X ou O. O jogador que conseguir colocar três de suas marcas em uma linha horizontal, vertical ou diagonal é o vencedor. Na maioria das vezes, o jogo empatará. aqui, substituí X e O por cores e também mudei o 3 * 3 tradicional para 4 * 4. Portanto, um total de 16 leds e 16 interruptores cada interruptor representa o led correspondente. O jogador um é verde e o jogador 2 é vermelho. É isso, acho que você entendeu.
Agora vamos ver como fazer isso.
Etapa 1:Projeto e impressão do PCB
Este é o circuito de jogo que projetei usando a easyeda . aqui estou usando atmega328 como o coração deste projeto. Então eu converti o circuito em PCB. Eu projetei o PCB com uma dimensão de 89 mm * 50 mm porque esse é o tamanho padrão dos cartões de visita. Usei a ferramenta de inserção de imagem da easyeda para fazer o design. trata-se apenas de arte que você pode fazer com suas ideias. Depois de projetar o PCB, baixei o arquivo Gerber. Em seguida, fui para jlcpcb.com. Eu escolhi o JLCPCB porque eles oferecem apenas 2 $ por 5 PCBs. Para solicitar PCBs Basta clicar em solicitar agora e selecionar seu arquivo Gerber. após o upload, escolhi a cor preta de 0,8 mm de espessura e fiz o pedido. após 2 semanas recebi o PCB. O PCB tem apenas 0,8 mm de espessura, mas a qualidade é perfeita como eu esperava.
Etapa 2:componentes necessários
ATMEGA328P-AU * 1
0805 capacitor 22pf * 2
0805 capacitor 100nF * 2
SMD WS2812B-B * 16
0805 LED SMD * 2
0805 resistências 1K * 3
0805 resistores 10K 1
16MHZ * 1
micro USB Feminino * 1
baixe o BOM aqui
Etapa 3:soldagem
depois de pegar todos os componentes comecei a soldar
Comecei com a porta micro USB. Então eu soldava todos os outros componentes. Depois de soldar o circuito de controle, comecei a soldar LEDs de neopixel e depois de terminar soldei os interruptores correspondentes. Após 1 hora, concluí toda a soldagem e agora nosso PCB está assim.
Etapa 4:Programação
após terminar a soldagem conectei o cabo USB e testei. Agora é hora de fazer upload do código. Eu conectei os pinos spi a um Arduino ISP e carreguei o esboço
BAIXE O CÓDIGO DAQUI
Etapa 5:BRINQUE E DESFRUTE
Foi assim que fiz um cartão de visita com PCB de jogo 4 * 4 tic tac toe. Você pode baixar o circuito, código, gerbers dos links. Espero que você tenha gostado e aprendido algo com meu tutorial.
Código
- código
código 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'}; chave char; int w =0; const byte ROWS =4; // quatro linhasconst byte COLS =4; // quatro colunas // definem os símbolos nos botões do teclado hexaKeys [ROWS] [COLS] ={{'1', '2', '3', 'A'}, {'4', '5' , '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ ROWS] ={A0, A1, A2, A3}; // conectar às pinagens de linha do byte do teclado colPins [COLS] ={A4, A5,2,3}; // conectar à pinagem da coluna do keypadKeypad customKeypad =Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS); void setup () {Serial.begin (9600); LEDS.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); para (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 (); atraso (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 (); atraso (500); } FastLED.clear (); FastLED.show ();} void loop () {key =customKeypad.getKey (); if (chave &&player ==1) {Serial.println ("\ nP1"); Serial.println (chave); n =número (chave); Serial.println (n); leds [n] .setRGB (0, 255, 0); FastLED.show (); a [n] ='X'; Serial.println (a [n]); w =verificação (a, n); if (w ==1) {Serial.println ("Jogador 1 ganha!"); enquanto (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 (); atraso (500); FastLED.clear (); FastLED.show (); atraso (500); }} player ++; atraso (1000); } atraso (20); key =customKeypad.getKey (); if (chave &&player ==2) {Serial.println ("\ nP2"); Serial.println (chave); n =número (chave); Serial.println (n); leds [n] .setRGB (0, 0, 225); FastLED.show (); a [n] ='0'; Serial.println (a [n]); w =verificação (a, n); if (w ==2) {Serial.println ("Jogador 2 ganha!"); enquanto (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 (); atraso (500); FastLED.clear (); FastLED.show (); atraso (500); }} e ++; jogador--; atraso (1000); } if (e ==8) {Serial.println ("Game Draw"); enquanto (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 (); atraso (1000); FastLED.clear (); FastLED.show (); atraso (500); }} delay (20);} número interno (char keyn) {if (keyn =='1') return 0; if (keyn =='2') return 1; if (keyn =='3') return 2; if (chave =='A') retorna 3; if (keyn =='4') return 4; if (keyn =='5') retorna 5; if (keyn =='6') return 6; if (keyn =='B') return 7; if (keyn =='7') retorna 8; if (keyn =='8') return 9; if (keyn =='9') retorna 10; if (keyn =='C') return 11; if (key =='*') return 12; if (keyn =='0') return 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') return 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;}
Esquemas
Processo de manufatura
- Jogo Arduino Gyroscope com MPU-6050
- Sensor de temperatura múltipla
- DIY 37 LED Roulette Game
- Controlador de jogo Arduino
- Arduino Due TIC TAC TOE com tela sensível ao toque
- MotionSense
- Impressora 3D Segurança contra incêndio
- Jogo Pixel Chaser
- Levitação eletromagnética repulsiva Arduino
- CoroFence - Detector Térmico🖖