Tech-TicTacToe
Компоненты и расходные материалы
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
Необходимые инструменты и машины
![]() |
|
Приложения и онлайн-сервисы
![]() |
|
Об этом проекте
Привет, сообщество хакеров.
Я Симона Адобс, и это мой третий проект, который я выпустил на Hackster. Это мой первый проект, в котором я создаю структуру из картона, бумаги и горячего клея, содержащую Arduino и другие компоненты.
Это короткое видео, показывающее, как работает Трис:
Здесь вы можете увидеть проект со всех сторон:



Надеюсь, вам понравится, потому что я потратил на это несколько часов! Теперь приступим к проекту.
Как работает Трис?
Ответ очень прост:когда вы нажимаете номер на клавиатуре, Arduino включает соответствующий квадрат.
- Могу ли я сменить игрока?
Когда вы включаете квадрат, Arduino мгновенно переключается на ход следующего игрока.
- Распознает ли Arduino, когда я выигрываю?
Когда игрок выигрывает, Arduino пишет на светодиодной точечной матрице:
- "1", если победителем стал игрок 1;
- «2», если победителем становится игрок 2.
Могу ли я перезапустить Arduino с помощью кнопки после завершения игры?
Вы можете перезапустить игру, если нажмете кнопку «0» на клавиатуре - Arduino перезапустится.
Как узнать игрока?
Вы можете легко распознать игрока, потому что, хотя светодиодная точечная матрица только красного цвета, у каждого игрока есть определенный узор, образованный светодиодами 2x2:
- У игрока 1 такая закономерность: "\"
- У игрока 2 есть другой шаблон: "/"
По любым вопросам, предложениям, критике или объяснению кода, не стесняйтесь комментировать ниже. Если вам нравится этот проект, оставьте лайк и посмотрите другие мои проекты!
Попробуйте создать другую структуру или персонализировать мою структуру и пришлите мне ее фото!
Удачного ДНЯ!
Симона из Италии <3
Код
- Тех-Трис
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 =false, q8 =false, q9 =false; int row, col, rowPlays, colPlays, result, player, победитель; char hexaKeys [4] [3] ={{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; int воспроизводит [3] [3 ] ={{0,0,0}, {0,0,0}, {0,0,0}}; байт rowPins [4] ={8, 7, 6, 5}; byte colPins [3] ={4, 3, 2}; Keypad customKeypad =Keypad (makeKeymap (hexaKeys), rowPins, colPins, 4, 3); void setup () {lc.shutdown (0, false); lc.setIntensity (0,0); lc.clearDisplay (0);} void loop () {int customKey =customKeypad.getKey (); покраска (customKey); победа (результат); если (победитель ==1) {lc.clearDisplay (0); в то время как (победитель ==1) {char customKey =customKeypad.getKey (); если (customKey =='0') {Reset_AVR (); } lc.setLed (0,1,4, истина); lc.setLed (0,2,5, истина); lc.setLed (0,3,6, истина); lc.setLed (0,4,7, истина); lc.setLed (0,4,6, истина); lc.setLed (0,4,5, истина); lc.setLed (0,4,4, истина); lc.setLed (0,4,3, истина); lc.setLed (0,4,2, истина); lc.setLed (0,4,1, истина); lc.setLed (0,4,0, истина); lc.setLed (0,5,0, истина); lc.setLed (0,6,0, истина); lc.setLed (0,3,0, истина); lc.setLed (0,2,0, истина); }} иначе, если (победитель ==2) {lc.clearDisplay (0); в то время как (победитель ==2) {char customKey =customKeypad.getKey (); если (customKey =='0') {Reset_AVR (); } lc.setLed (0,2,0, истина); lc.setLed (0,3,0, истина); lc.setLed (0,4,0, истина); lc.setLed (0,5,0, истина); lc.setLed (0,2,1, истина); lc.setLed (0,2,2, истина); lc.setLed (0,2,3, истина); lc.setLed (0,2,4, истина); lc.setLed (0,3,4, истина); lc.setLed (0,4,4, истина); lc.setLed (0,5,4, истина); lc.setLed (0,5,5, истина); lc.setLed (0,5,6, истина); lc.setLed (0,5,7, истина); lc.setLed (0,4,7, истина); lc.setLed (0,3,7, истина); lc.setLed (0,2,7, истина); }}} int round_player () {если (player1) {player1 =false; результат =1; } еще {player1 =true; результат =2; } return result;} недействительный выигрыш (int player) {if (plays [0] [0] ==player &&plays [0] [1] ==player &&plays [0] [2] ==player) {Winner =игрок; } else if (plays [1] [0] ==player &&plays [1] [1] ==player &&plays [1] [2] ==player) {победитель =игрок; } else if (plays [2] [0] ==player &&plays [2] [1] ==player &&plays [2] [2] ==player) {победитель =игрок; } else if (plays [0] [0] ==player &&plays [1] [0] ==player &&plays [2] [0] ==player) {победитель =игрок; } else if (plays [0] [1] ==player &&plays [1] [1] ==player &&plays [2] [1] ==player) {победитель =игрок; } else if (plays [0] [2] ==player &&plays [1] [2] ==player &&plays [2] [2] ==player) {победитель =игрок; } else if (plays [0] [0] ==player &&plays [1] [1] ==player &&plays [2] [2] ==player) {победитель =игрок; } else if (plays [0] [2] ==player &&plays [1] [1] ==player &&plays [2] [0] ==player) {победитель =игрок; }} void switch_on_led (int col, int row, int colPlays, int rowPlays) {if (player1) {lc.setLed (0, col, row, true); lc.setLed (0, столбец + 1, строка-1, истина); } еще {lc.setLed (0, столбец, строка-1, истина); lc.setLed (0, столбец + 1, строка, истина); } играет [rowPlays] [colPlays] =round_player ();} пустота рисования (int bottom) {switch (bottom) {case 49:if (! q1) {switch_on_led (0,7,0,0); q1 =истина; } ломать; случай 50:если (! q2) {switch_on_led (3,7,0,1); q2 =истина; } ломать; случай 51:если (! q3) {switch_on_led (6,7,0,2); q3 =истина; } ломать; случай 52:если (! q4) {switch_on_led (0,4,1,0); q4 =истина; } ломать; случай 53:если (! q5) {switch_on_led (3,4,1,1); q5 =истина; } ломать; случай 54:если (! q6) {switch_on_led (6,4,1,2); q6 =истина; } ломать; случай 55:если (! q7) {switch_on_led (0,1,2,0); q7 =истина; } ломать; случай 56:если (! q8) {switch_on_led (3,1,2,1); q8 =истина; } ломать; случай 57:если (! q9) {switch_on_led (6,1,2,2); q9 =истина; } ломать; случай 48:Reset_AVR (); ломать; }}
Схема
tris_1Nd6QnEjNE.fzz
Производственный процесс
- Создание монитора Ambilight с помощью Arduino
- Игра Arduino Pong - OLED-дисплей
- Игра Giant Animatronics Lego Minfig Operation Game
- Детектор звуковой частоты
- Клон Arduino Tamagotchi - цифровой питомец
- Манипулятор беспроводного переключателя света
- Водяной пистолет с датчиком движения
- Таймер обратного отсчета Arduino
- Устройства с голосовым управлением Bluetooth с OK Google
- Arduino Sunflower:электронный танцор солнца