Tech-TicTacToe
Componentes y suministros
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
Herramientas y máquinas necesarias
![]() |
|
Aplicaciones y servicios en línea
![]() |
|
Acerca de este proyecto
Hola, comunidad de piratas informáticos.
Soy Simone Adobs y este es mi tercer proyecto que lanzo en Hackster. Este es mi primer proyecto donde creo una estructura con cartón, papel y pistola de pegamento caliente, que contiene Arduino y otros componentes.
Este es un video corto que le muestra cómo funciona el Tris:
Aquí puede ver el proyecto desde todas las vistas:



¡Espero que les guste, porque le dediqué algunas horas! Ahora comencemos con el proyecto.
¿Cómo funciona el Tris?
La respuesta es muy simple:cuando haces clic en un número en el teclado, Arduino encenderá el cuadrado correspondiente.
- ¿Puedo cambiar de jugador?
Cuando enciendes un cuadrado, Arduino cambiará instantáneamente al turno del siguiente jugador.
- ¿Arduino reconoce cuando gano?
Cuando un jugador gana, Arduino escribe en la matriz de puntos LED:
- "1" si el ganador es el jugador 1;
- "2" si el ganador es el jugador 2.
Cuando finaliza el juego, ¿puedo reiniciar Arduino desde un botón?
Puedes reiniciar el juego si haces clic en el botón "0" en el teclado; Arduino se reinicia solo.
¿Cómo puedo reconocer a un jugador?
Puede reconocer fácilmente a un jugador porque, aunque el LED Dot Matrix es solo rojo, cada jugador tiene un patrón específico formado por 2x2 LED:
- El jugador 1 tiene este patrón: "\"
- El jugador 2 tiene este otro patrón: "/"
Para cualquier pregunta, sugerencia, crítica o explicación del código, no dude en comentar a continuación. Si te gusta este proyecto, deja un me gusta y echa un vistazo a mis otros proyectos.
¡Intenta hacer otra estructura o personaliza mi estructura y envíame una foto de ella!
¡Que tengas un buen día!
Simone de Italia <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 =true, q1 =false, q2 =false, q3 =false, q4 =false, q5 =false, q6 =false, q7 =falso, q8 =falso, q9 =falso; int fila, col, filaPlays, colPlays, resultado, jugador, ganador; char hexaKeys [4] [3] ={{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; int reproduce [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); configuración vacía () {lc.shutdown (0, falso); lc.setIntensity (0,0); lc.clearDisplay (0);} bucle vacío () {int customKey =customKeypad.getKey (); pintura (customKey); ganar (resultado); if (ganador ==1) {lc.clearDisplay (0); while (ganador ==1) {char customKey =customKeypad.getKey (); if (customKey =='0') {Reset_AVR (); } lc.setLed (0,1,4, verdadero); lc.setLed (0,2,5, verdadero); lc.setLed (0,3,6, verdadero); lc.setLed (0,4,7, verdadero); lc.setLed (0,4,6, verdadero); lc.setLed (0,4,5, verdadero); lc.setLed (0,4,4, verdadero); lc.setLed (0,4,3, verdadero); lc.setLed (0,4,2, verdadero); lc.setLed (0,4,1, verdadero); lc.setLed (0,4,0, verdadero); lc.setLed (0,5,0, verdadero); lc.setLed (0,6,0, verdadero); lc.setLed (0,3,0, verdadero); lc.setLed (0,2,0, verdadero); }} más si (ganador ==2) {lc.clearDisplay (0); while (ganador ==2) {char customKey =customKeypad.getKey (); if (customKey =='0') {Reset_AVR (); } lc.setLed (0,2,0, verdadero); lc.setLed (0,3,0, verdadero); lc.setLed (0,4,0, verdadero); lc.setLed (0,5,0, verdadero); lc.setLed (0,2,1, verdadero); lc.setLed (0,2,2, verdadero); lc.setLed (0,2,3, verdadero); lc.setLed (0,2,4, verdadero); lc.setLed (0,3,4, verdadero); lc.setLed (0,4,4, verdadero); lc.setLed (0,5,4, verdadero); lc.setLed (0,5,5, verdadero); lc.setLed (0,5,6, verdadero); lc.setLed (0,5,7, verdadero); lc.setLed (0,4,7, verdadero); lc.setLed (0,3,7, verdadero); lc.setLed (0,2,7, verdadero); }}} int round_player () {if (jugador1) {jugador1 =falso; resultado =1; } más {jugador1 =verdadero; resultado =2; } return result;} void win (int player) {if (juega [0] [0] ==jugador &&juega [0] [1] ==jugador &&juega [0] [2] ==jugador) {ganador =jugador; } más si (juega [1] [0] ==jugador &&juega [1] [1] ==jugador &&juega [1] [2] ==jugador) {ganador =jugador; } más si (juega [2] [0] ==jugador &&juega [2] [1] ==jugador &&juega [2] [2] ==jugador) {ganador =jugador; } más si (juega [0] [0] ==jugador &&juega [1] [0] ==jugador &&juega [2] [0] ==jugador) {ganador =jugador; } más si (juega [0] [1] ==jugador &&juega [1] [1] ==jugador &&juega [2] [1] ==jugador) {ganador =jugador; } más si (juega [0] [2] ==jugador &&juega [1] [2] ==jugador &&juega [2] [2] ==jugador) {ganador =jugador; } más si (juega [0] [0] ==jugador &&juega [1] [1] ==jugador &&juega [2] [2] ==jugador) {ganador =jugador; } más si (juega [0] [2] ==jugador &&juega [1] [1] ==jugador &&juega [2] [0] ==jugador) {ganador =jugador; }} void switch_on_led (int col, int fila, int colPlays, int rowPlays) {if (jugador1) {lc.setLed (0, col, fila, verdadero); lc.setLed (0, col + 1, fila-1, verdadero); } else {lc.setLed (0, col, row-1, true); lc.setLed (0, col + 1, fila, verdadero); } reproduce [rowPlays] [colPlays] =round_player ();} pintura vacía (int bottone) {switch (bottone) {caso 49:if (! q1) {switch_on_led (0,7,0,0); q1 =verdadero; } descanso; caso 50:if (! q2) {switch_on_led (3,7,0,1); q2 =verdadero; } descanso; caso 51:if (! q3) {switch_on_led (6,7,0,2); q3 =verdadero; } descanso; caso 52:if (! q4) {switch_on_led (0,4,1,0); q4 =verdadero; } descanso; caso 53:if (! q5) {switch_on_led (3,4,1,1); q5 =verdadero; } descanso; caso 54:if (! q6) {switch_on_led (6,4,1,2); q6 =verdadero; } descanso; caso 55:if (! q7) {switch_on_led (0,1,2,0); q7 =verdadero; } descanso; caso 56:if (! q8) {switch_on_led (3,1,2,1); q8 =verdadero; } descanso; caso 57:if (! q9) {switch_on_led (6,1,2,2); q9 =verdadero; } descanso; caso 48:Reset_AVR (); descanso; }}
Esquemas
tris_1Nd6QnEjNE.fzz
Proceso de manufactura
- Hacer Monitor Ambilight usando Arduino
- Juego Arduino Pong - Pantalla OLED
- Animatronics gigantes Lego Minfig Operation Game
- Detector de frecuencia de audio
- Clon Arduino Tamagotchi - Mascota digital
- Manipulador de interruptor de luz inalámbrico
- Pistola de agua con sensor de movimiento
- Temporizador de cuenta atrás de Arduino
- Dispositivos Bluetooth controlados por voz con OK Google
- Arduino Sunflower:Un Sun-Dancer electrónico
- RC Porsche Car (Proyecto Arduino)