Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Tech-TicTacToe

Компоненты и расходные материалы

Arduino UNO
Arduino
× 1
Матрица светодиодных точек MAX7219
× 1
Клавиатура мембранного переключателя
× 1

Необходимые инструменты и машины

Пистолет для горячего клея (общий)

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Привет, сообщество хакеров.

Я Симона Адобс, и это мой третий проект, который я выпустил на 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

Производственный процесс

  1. Создание монитора Ambilight с помощью Arduino
  2. Игра Arduino Pong - OLED-дисплей
  3. Игра Giant Animatronics Lego Minfig Operation Game
  4. Детектор звуковой частоты
  5. Клон Arduino Tamagotchi - цифровой питомец
  6. Манипулятор беспроводного переключателя света
  7. Водяной пистолет с датчиком движения
  8. Таймер обратного отсчета Arduino
  9. Устройства с голосовым управлением Bluetooth с OK Google
  10. Arduino Sunflower:электронный танцор солнца