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

Визитная карточка игры «Крестики-нолики»

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

Microchip Technology ATmega328
× 1
Светодиодная лента, NeoPixel Digital RGB
× 1
Тактильный переключатель, срабатывающий сверху
× 1
Специальная плата JLCPCB
× 1
Arduino UNO
× 1

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

Паяльник (общий)
Проволока для припоя, без свинца
Флюс для припоя, пайка
10 шт. Комплект перемычки, длина 5 см

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

IDE Arduino

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

Привет!

В этом уроке я покажу вам, как сделать визитную карточку. Не просто визитная карточка. Это печатная плата но Прямо как обычная визитная карточка. Вы можете увидеть название, логотип EDISON SCIENCE CORNER, значки социальных сетей и QR-код. QR-код направит вас на мой канал на YouTube. Но с противоположной стороны вы можете увидеть схему. Это крестики-нолики игровая схема. Крестики-нолики - это игра для двух игроков. Также известен как X O Game . два игрока, которые по очереди отмечают поля в сетке три на три знаком X или O. Игрок, которому удастся разместить три своих знака в горизонтальном, вертикальном или диагональном ряду, становится победителем. Большую часть времени игра будет рисоваться. здесь я заменил X и O цветами, а также заменил традиционные 3 * 3 на 4 * 4. Таким образом, в общей сложности 16 светодиодов и 16 переключателей, каждый переключатель представляет собой соответствующий светодиод. Первый игрок имеет зеленый цвет, а второй - красный. Думаю, ты понял.

Теперь посмотрим, как это сделать.

Шаг 1. Разработка и печать печатной платы

Это игровая схема, которую я разработал с помощью easyeda . . здесь я использую atmega328 как сердце этого проекта. Затем я преобразовал схему в печатную плату. Я разработал печатную плату размером 89 мм * 50 мм, потому что это стандартный размер визитных карточек. Я использовал инструмент вставки изображения easyeda для создания дизайна. это просто искусство, которое вы можете воплотить в жизнь своими идеями. После проектирования печатной платы я загрузил файл Gerber. Затем я пошел на jlcpcb.com. Я выбрал JLCPCB, потому что они предлагают всего 2 доллара за 5 печатных плат. Чтобы заказать печатные платы Просто нажмите «Заказать сейчас» и выберите свой файл Gerber. После загрузки я выбрал черный цвет толщиной 0,8 мм и разместил заказ. через 2 недели мне пришла печатная плата. Печатная плата имеет толщину всего 0,8 мм, но качество идеальное, как я и ожидал.

Шаг 2. Необходимые компоненты

ATMEGA328P-AU * 1

0805 конденсатор 22пФ * 2

0805 конденсатор 100 нФ * 2

SMD WS2812B-B * 16

0805 LED SMD * 2

0805 резисторы 1К * 3

0805 резисторов 10К 1

16 МГц * 1

micro USBFemale * 1

скачать спецификацию отсюда

Шаг 3. Пайка

схватив все компоненты, приступил к пайке

Я начал с порта micro USB. Затем я спаял все остальные компоненты. После пайки схемы управления я начал паять неопиксельные светодиоды, а после этого припаял соответствующие переключатели. Через 1 час я завершил всю пайку, и теперь наша печатная плата выглядит так.

Шаг 4. Программирование

после завершения пайки я подключил кабель USB и протестировал его. Пришло время загрузить код. Я подключил контакты spi к провайдеру Arduino и загрузил скетч

СКАЧАТЬ КОД ЗДЕСЬ

Шаг 5. ИГРАЙТЕ И НАСЛАЖДАЙТЕСЬ

Вот так я сделал визитную карточку с игровой печатной платой 4 * 4 крестики-нолики. Скачать схему, код, герберы можно по ссылкам. Надеюсь, вам понравилось и вы узнали что-то из моего руководства.

Код

  • код
код 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'}; символьный ключ; int w =0; const byte ROWS =4; // четыре строки по одному байту COLS =4; // четыре столбца // определяют символы на кнопках клавиатуры char hexaKeys [ROWS] [COLS] ={{'1', '2', '3', 'A'}, {'4', '5' , '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ СТРОКИ] ={A0, A1, A2, A3}; // подключаемся к выводам строк байта клавиатуры colPins [COLS] ={A4, A5,2,3}; // подключаемся к выводам столбцов keypadKeypad customKeypad =Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS); void setup () {Serial.begin (9600); LEDS.addLeds  (светодиоды, NUM_LEDS); FastLED.setBrightness (ЯРКОСТЬ); для (int m =0; m <3; m ++) {светодиоды [0] .setRGB (0, 255, 0); светодиоды [1] .setRGB (0, 255, 0); светодиоды [2] .setRGB (0, 255, 0); светодиоды [3] .setRGB (0, 255, 0); светодиоды [4] .setRGB (0, 255, 0); светодиоды [5] .setRGB (0, 255, 0); светодиоды [6] .setRGB (0, 255,0); светодиоды [7] .setRGB (0, 255, 0); светодиоды [8] .setRGB (0, 255, 0); светодиоды [9] .setRGB (0, 255, 0); светодиоды [10] .setRGB (0, 255, 0); светодиоды [11] .setRGB (0, 255, 0); светодиоды [12] .setRGB (0, 255, 0); светодиоды [13] .setRGB (0, 255, 0); светодиоды [14] .setRGB (0, 255, 0); светодиоды [15] .setRGB (0, 255, 0); FastLED.show (); задержка (500); светодиоды [0] .setRGB (0, 0, 225); светодиоды [1] .setRGB (0, 0, 225); светодиоды [2] .setRGB (0, 0, 225); светодиоды [3] .setRGB (0, 0, 225); светодиоды [4] .setRGB (0, 0, 225); светодиоды [5] .setRGB (0, 0, 225); светодиоды [6] .setRGB (0, 0, 225); светодиоды [7] .setRGB (0, 0, 225); светодиоды [8] .setRGB (0, 0, 225); светодиоды [9] .setRGB (0, 0, 225); светодиоды [10] .setRGB (0, 0, 225); светодиоды [11] .setRGB (0, 0, 225); светодиоды [12] .setRGB (0, 0, 225); светодиоды [13] .setRGB (0, 0, 225); светодиоды [14] .setRGB (0, 0, 225); светодиоды [15] .setRGB (0, 0, 225); FastLED.show (); задержка (500); } FastLED.clear (); FastLED.show ();} недействительный цикл () {ключ =customKeypad.getKey (); если (ключ &&player ==1) {Serial.println ("\ nP1"); Serial.println (ключ); n =номер (ключ); Serial.println (n); светодиоды [n] .setRGB (0, 255, 0); FastLED.show (); a [n] ='X'; Serial.println (a [n]); ш =проверка (а, п); if (w ==1) {Serial.println («Игрок 1 побеждает!»); в то время как (1) {светодиоды [0] .setRGB (0, 255, 0); светодиоды [1] .setRGB (0, 255, 0); светодиоды [2] .setRGB (0, 255, 0); светодиоды [3] .setRGB (0, 255, 0); светодиоды [4] .setRGB (0, 255, 0); светодиоды [5] .setRGB (0, 255, 0); светодиоды [6] .setRGB (0, 255,0); светодиоды [7] .setRGB (0, 255, 0); светодиоды [8] .setRGB (0, 255, 0); светодиоды [9] .setRGB (0, 255, 0); светодиоды [10] .setRGB (0, 255, 0); светодиоды [11] .setRGB (0, 255, 0); светодиоды [12] .setRGB (0, 255, 0); светодиоды [13] .setRGB (0, 255, 0); светодиоды [14] .setRGB (0, 255, 0); светодиоды [15] .setRGB (0, 255, 0); FastLED.show (); задержка (500); FastLED.clear (); FastLED.show (); задержка (500); }} player ++; задержка (1000); } задержка (20); ключ =customKeypad.getKey (); если (ключ &&player ==2) {Serial.println ("\ nP2"); Serial.println (ключ); n =номер (ключ); Serial.println (n); светодиоды [n] .setRGB (0, 0, 225); FastLED.show (); a [n] ='0'; Serial.println (a [n]); ш =проверка (а, п); if (w ==2) {Serial.println («Игрок 2 побеждает!»); в то время как (1) {светодиоды [0] .setRGB (0, 0, 225); светодиоды [1] .setRGB (0, 0, 225); светодиоды [2] .setRGB (0, 0, 225); светодиоды [3] .setRGB (0, 0, 225); светодиоды [4] .setRGB (0, 0, 225); светодиоды [5] .setRGB (0, 0, 225); светодиоды [6] .setRGB (0, 0, 225); светодиоды [7] .setRGB (0, 0, 225); светодиоды [8] .setRGB (0, 0, 225); светодиоды [9] .setRGB (0, 0, 225); светодиоды [10] .setRGB (0, 0, 225); светодиоды [11] .setRGB (0, 0, 225); светодиоды [12] .setRGB (0, 0, 225); светодиоды [13] .setRGB (0, 0, 225); светодиоды [14] .setRGB (0, 0, 225); светодиоды [15] .setRGB (0, 0, 225); FastLED.show (); задержка (500); FastLED.clear (); FastLED.show (); задержка (500); }} e ++; player--; задержка (1000); } if (e ==8) {Serial.println ("Игра в розыгрыш"); в то время как (1) {светодиоды [0] .setRGB (255, 0, 0); светодиоды [1] .setRGB (255, 0, 0); светодиоды [2] .setRGB (255, 0, 0); светодиоды [3] .setRGB (255, 0, 0); светодиоды [4] .setRGB (255, 0, 0); светодиоды [5] .setRGB (255, 0, 0); светодиоды [6] .setRGB (255, 0, 0); светодиоды [7] .setRGB (255, 0, 0); светодиоды [8] .setRGB (255, 0, 0); светодиоды [9] .setRGB (255, 0, 0); светодиоды [10] .setRGB (255, 0, 0); светодиоды [11] .setRGB (255, 0, 0); светодиоды [12] .setRGB (255, 0, 0); светодиоды [13] .setRGB (255, 0, 0); светодиоды [14] .setRGB (255, 0, 0); светодиоды [15] .setRGB (255, 0, 0); FastLED.show (); задержка (1000); FastLED.clear (); FastLED.show (); задержка (500); }} задержка (20);} int number (char keyn) {if (keyn =='1') return 0; если (keyn =='2') вернуть 1; если (keyn =='3') вернуть 2; если (ключ =='A') вернуть 3; если (keyn =='4') вернуть 4; если (keyn =='5') вернуть 5; если (keyn =='6') вернуть 6; если (keyn =='B') вернуть 7; если (keyn =='7') вернуть 8; если (keyn =='8') вернуть 9; если (keyn =='9') вернуть 10; если (keyn =='C') вернуть 11; если (ключ =='*') возврат 12; если (keyn =='0') вернуть 13; если (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;} 

Схема


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

  1. Игра с гироскопом Arduino с MPU-6050
  2. Многотемпературный датчик
  3. Рулетка DIY 37 LED
  4. Игровой контроллер Arduino
  5. Arduino Due TIC TAC TOE с сенсорным экраном
  6. MotionSense
  7. Пожарная безопасность 3D-принтера
  8. Игра Pixel Chaser
  9. Отталкивающая электромагнитная левитация Arduino
  10. CoroFence - Тепловой детектор🖖