Tech-TicTacToe
Componentes e suprimentos
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
Ferramentas e máquinas necessárias
![]() |
|
Aplicativos e serviços online
![]() |
|
Sobre este projeto
Olá, comunidade Hackster.
Sou Simone Adobs e este é meu terceiro projeto que lancei no Hackster. Este é o meu primeiro projeto onde crio uma estrutura em papelão, papel e pistola de cola quente, que contém o Arduino e outros componentes.
Este é um pequeno vídeo que mostra como funciona o Tris:
Aqui você pode ver o projeto de todas as visualizações:



Espero que gostem, pois passei algumas horas nisso! Agora vamos começar com o projeto.
Como funciona o Tris?
A resposta é muito simples:quando você clica em um número no teclado, o Arduino liga o quadrado correspondente.
- Posso trocar de jogador?
Quando você liga um quadrado, o Arduino instantaneamente muda para a vez do próximo jogador.
- O Arduino reconhece quando eu ganho?
Quando um jogador ganha, o Arduino escreve no LED Dot Matrix:
- "1" se o vencedor for o jogador 1;
- "2" se o vencedor for o jogador 2.
Quando o jogo terminar, posso reiniciar o Arduino com um botão?
Você pode reiniciar o jogo clicando no botão "0" no teclado - o Arduino reinicia sozinho.
Como posso reconhecer um jogador?
Você pode reconhecer facilmente um jogador porque, embora o LED Dot Matrix seja apenas vermelho, cada jogador tem um padrão específico formado por 2x2 LED:
- O jogador 1 tem este padrão: "\"
- O jogador 2 tem este outro padrão: "/"
Em caso de dúvidas, sugestões, críticas ou explicação do código, fique à vontade para comentar abaixo. Se gostou desse projeto deixe um like e dê uma olhada nos meus outros projetos!
Tente fazer outra estrutura ou personalize minha estrutura e me mande uma foto dela!
Tenha um BOM DIA!
Simone da Itália <3
Código
- Tech-Tris
Tech-Tris C / C ++
#include#include #include #include #define Reset_AVR () wdt_enable (WDTO_30MS); while (1) {} LedControl lc =LedControl (12,10,11,1); bool player1 =verdadeiro, q1 =falso, q2 =falso, q3 =falso, q4 =falso, q5 =falso, q6 =falso, q7 =falso, q8 =falso, q9 =falso; int row, col, rowPlays, colPlays, resultado, jogador, vencedor; char hexaKeys [4] [3] ={{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; jogos internos [3] [3 ] ={{0,0,0}, {0,0,0}, {0,0,0}}; byte rowPins [4] ={8, 7, 6, 5}; byte colPins [3] ={4, 3, 2}; Teclado customKeypad =Teclado (makeKeymap (hexaKeys), rowPins, colPins, 4, 3); void setup () {lc.shutdown (0, falso); lc.setIntensity (0,0); lc.clearDisplay (0);} void loop () {int customKey =customKeypad.getKey (); pintura (customKey); ganhar (resultado); if (vencedor ==1) {lc.clearDisplay (0); enquanto (vencedor ==1) {char customKey =customKeypad.getKey (); if (customKey =='0') {Reset_AVR (); } lc.setLed (0,1,4, verdadeiro); lc.setLed (0,2,5, verdadeiro); lc.setLed (0,3,6, verdadeiro); lc.setLed (0,4,7, verdadeiro); lc.setLed (0,4,6, verdadeiro); lc.setLed (0,4,5, verdadeiro); lc.setLed (0,4,4, verdadeiro); lc.setLed (0,4,3, verdadeiro); lc.setLed (0,4,2, verdadeiro); lc.setLed (0,4,1, verdadeiro); lc.setLed (0,4,0, verdadeiro); lc.setLed (0,5,0, verdadeiro); lc.setLed (0,6,0, verdadeiro); lc.setLed (0,3,0, verdadeiro); lc.setLed (0,2,0, verdadeiro); }} else if (vencedor ==2) {lc.clearDisplay (0); enquanto (vencedor ==2) {char customKey =customKeypad.getKey (); if (customKey =='0') {Reset_AVR (); } lc.setLed (0,2,0, verdadeiro); lc.setLed (0,3,0, verdadeiro); lc.setLed (0,4,0, verdadeiro); lc.setLed (0,5,0, verdadeiro); lc.setLed (0,2,1, verdadeiro); lc.setLed (0,2,2, verdadeiro); lc.setLed (0,2,3, verdadeiro); lc.setLed (0,2,4, verdadeiro); lc.setLed (0,3,4, verdadeiro); lc.setLed (0,4,4, verdadeiro); lc.setLed (0,5,4, verdadeiro); lc.setLed (0,5,5, verdadeiro); lc.setLed (0,5,6, verdadeiro); lc.setLed (0,5,7, verdadeiro); lc.setLed (0,4,7, verdadeiro); lc.setLed (0,3,7, verdadeiro); lc.setLed (0,2,7, verdadeiro); }}} int round_player () {if (player1) {player1 =false; resultado =1; } else {player1 =true; resultado =2; } resultado de retorno;} vitória nula (jogador interno) {if (joga [0] [0] ==jogador &&joga [0] [1] ==jogador &&joga [0] [2] ==jogador) {vencedor =jogador; } else if (joga [1] [0] ==jogador &&joga [1] [1] ==jogador &&joga [1] [2] ==jogador) {vencedor =jogador; } else if (joga [2] [0] ==jogador &&joga [2] [1] ==jogador &&joga [2] [2] ==jogador) {vencedor =jogador; } else if (joga [0] [0] ==jogador &&joga [1] [0] ==jogador &&joga [2] [0] ==jogador) {vencedor =jogador; } else if (joga [0] [1] ==jogador &&joga [1] [1] ==jogador &&joga [2] [1] ==jogador) {vencedor =jogador; } else if (joga [0] [2] ==jogador &&joga [1] [2] ==jogador &&joga [2] [2] ==jogador) {vencedor =jogador; } else if (joga [0] [0] ==jogador &&joga [1] [1] ==jogador &&joga [2] [2] ==jogador) {vencedor =jogador; } else if (joga [0] [2] ==jogador &&joga [1] [1] ==jogador &&joga [2] [0] ==jogador) {vencedor =jogador; }} void switch_on_led (int col, int row, int colPlays, int rowPlays) {if (player1) {lc.setLed (0, col, row, true); lc.setLed (0, col + 1, linha 1, verdadeiro); } else {lc.setLed (0, col, linha 1, verdadeiro); lc.setLed (0, col + 1, linha, verdadeiro); } reproduz [rowPlays] [colPlays] =round_player ();} void painting (int bottone) {switch (bottone) {case 49:if (! q1) {switch_on_led (0,7,0,0); q1 =verdadeiro; } pausa; caso 50:if (! q2) {switch_on_led (3,7,0,1); q2 =verdadeiro; } pausa; caso 51:if (! q3) {switch_on_led (6,7,0,2); q3 =verdadeiro; } pausa; caso 52:if (! q4) {switch_on_led (0,4,1,0); q4 =verdadeiro; } pausa; caso 53:if (! q5) {switch_on_led (3,4,1,1); q5 =verdadeiro; } pausa; caso 54:if (! q6) {switch_on_led (6,4,1,2); q6 =verdadeiro; } pausa; caso 55:if (! q7) {switch_on_led (0,1,2,0); q7 =verdadeiro; } pausa; caso 56:if (! q8) {switch_on_led (3,1,2,1); q8 =verdadeiro; } pausa; caso 57:if (! q9) {switch_on_led (6,1,2,2); q9 =verdadeiro; } pausa; caso 48:Reset_AVR (); pausa; }}
Esquemas
tris_1Nd6QnEjNE.fzz
Processo de manufatura
- Faça Monitor Ambilight usando Arduino
- Jogo Arduino Pong - Tela OLED
- Jogo de Operação Gigante Animatronics Lego Minfig
- Detector de frequência de áudio
- Arduino Tamagotchi Clone - Animal de estimação digital
- Manipulador de interruptor de luz sem fio
- Pistola de água com sensor de movimento
- Cronômetro de contagem regressiva do Arduino
- Dispositivos Bluetooth controlados por voz com OK Google
- Arduino Sunflower:An Electronic Sun-Dancer