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

Электронная шахматная доска (демонстрационный прототип 4x4)

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

Датчик эффекта Холла
× 16
Беспаечная макетная плата, полный размер
× 1
LED (общий)
× 16
Считыватель RFID (общий)
RFID-считыватель 125 кГц и антенна
× 1
Arduino Mega 2560
× 1
RFID-метка 3M
× 2

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

оргстекло
Глянцевая бумага
деревянные доски
Акриловая краска (темно-зеленая и кремовая) x2
10-миллиметровые круглые магниты
Фигуры пешки и королевы
Паяльник и паяльные материалы

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

IDE Arduino

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

Привет, создатели

Я Тахир Мириев, я закончил Ближневосточный технический университет в 2018 году, Анкара / Турция. Я специализировался на прикладной математике, но мне всегда нравилось делать вещи, особенно когда это требовало ручной работы с электроникой, дизайном и программированием. Благодаря уникальному курсу прототипирования, который предлагает наш отдел промышленного дизайна, у меня появилась возможность сделать что-то действительно интересное. Проект можно рассматривать как семестр, рассчитанный на целый семестр (4 месяца). Студентам была поставлена ​​задача найти творческий подход к разработке уже существующих продуктов / демонстраций и реализовать свои идеи с помощью микроконтроллеров и датчиков Arduino. Я думал о шахматах, и после некоторых исследований успешных проектов я заметил, что в предыдущих проектах разработчики в основном использовали готовые шахматные движки (где все ходы каждой фигуры были запрограммированы в ядре) вместе с Raspberry Pi, некоторыми мультиплексорами. , Светодиоды и герконы. Однако в своем проекте я решил избавиться от любого внешнего программного обеспечения в виде шахматного движка и найти творческое решение проблемы распознавания фигур, используя считыватель RFID, датчики эффекта Холла и Arduino Mega.

Проще говоря, предположим, что у вас есть шахматная доска с «мозгом» =микроконтроллером, и вы должны заставить свою доску понимать, какую фигуру вы держите в руке и куда вы ее поместили. Это проблема распознавания фигур. Решение этой проблемы тривиально, если у вас есть шахматный движок, в котором все фигуры стоят на своих исходных позициях на доске. Прежде чем я объясню, почему это так, позвольте мне сделать несколько замечаний.

Для тех, кто с энтузиазмом относится к тому, как здесь все работает, я должен пояснить, зачем нам нужны герконы (или, в моем случае, я использовал датчики на эффекте Холла):если вы поместите магнит под каждую деталь и возьмете его из квадрат на доске (при условии, что под каждым квадратом есть геркон) из-за наличия / отсутствия магнитного поля над датчиком, вы можете заставить ваш контроллер понять, стоит ли на квадрате фигура. Однако он по-прежнему ничего не сообщает микроконтроллеру о том, какая деталь стоит на квадрате. Это только говорит о том, что на квадрате нет фигуры. На этом этапе мы сталкиваемся с проблемой распознавания фигур, которую можно решить с помощью шахматного движка, когда все фигуры помещаются на свои исходные позиции при запуске игры. Таким образом, микроконтроллер с самого начала «знает», где стоит каждая деталь, со всеми адресами, зафиксированными в памяти. Тем не менее, это накладывает на нас огромное ограничение:вы не можете выбрать, скажем, любое количество фигур, разместить их случайным образом в любом месте на доске и начать анализировать игру. Вы всегда должны начинать с самого начала, все фигуры должны быть изначально на доске, так как это единственный способ для микроконтроллера отслеживать их положение после того, как вы подняли фигуру и поместили ее на какой-либо другой квадрат. По сути, это была проблема, которую я заметил и решил работать над ней.

Мое решение было довольно простым, но творческим. Я разместил RFID-считыватель на лицевой стороне платы. Между тем, я прикрепил не только магнит к деталям, но и метку RFID, каждая деталь которой имеет уникальный идентификатор. Следовательно, прежде чем разместить фигуру на любом желаемом квадрате, вы можете сначала поднести кусок близко к считывателю RFID и позволить ему прочитать идентификатор, идентифицировать кусок, сохранить его в памяти, а затем вы можете разместить его в любом месте. Кроме того, вместо использования герконов, чтобы упростить конструкцию схемы, я использовал датчики эффекта Холла, которые работают аналогично, с той лишь разницей, что отправляют 0 или 1 в микроконтроллер в качестве цифровых данных, что означает «есть» или «нет» ни одной фигуры на квадрате соответственно. Я также добавил светодиоды (к сожалению, не того же цвета, их не было), чтобы, когда вы поднимаете деталь, загорались все квадратные места, где можно было разместить поднятую деталь. Думайте об этом как об образовательной практике для изучающих шахматы :)

Напоследок хотелось бы отметить, что несмотря на то, что я использовал несколько техник, проект остается простым и понятным, не глубоко проработанным и не слишком сложным. У меня не было достаточно времени, чтобы заняться шахматной доской 8x8 (также потому, что 64 датчика Холла являются дорогостоящими в Турции, я покрыл все расходы, связанные с проектом), поэтому я сделал демонстрационную версию 4x4, протестировав только две фигуры:пешку и ферзь. . Вместо шахматного движка я написал исходный код для Arduino, который все генерирует.

Прежде чем перейти к пошаговой инструкции объясняя, как был реализован проект, я бы порекомендовал посмотреть иллюстративное видео и получить некоторое интуитивное представление о том, о чем я говорю.

Примечание №1:перегорел один из красных светодиодов (первый в ряду / слева направо).

Примечание №2:Хотя технология RFID широко используется, по моему опыту могу сказать, что технология RFID - не лучшая идея для использования в приложениях для самостоятельной работы (конечно, если у вас есть альтернативы). Прежде чем все заработало, я провел много попыток, поместив шахматные фигуры ближе к считывающему устройству и дождавшись, пока он правильно прочитает идентификатор. Для этого следует настроить последовательный порт, потому что способ считывания идентификатора считывателем RFID - просто головная боль. Чтобы разобраться в проблеме, нужно попробовать самому.

Вот список всех инструментов Я использовал для проекта:

Электронные компоненты:

  • Макетная плата (1 шт.)
  • Всенаправленные датчики Холла A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) (16 шт.)
  • Базовые светодиоды 5 мм (x16)
  • Перемычки
  • Считыватель RFID 125 кГц и антенна (x1)
  • Arduino Mega (x1)
  • RFID-метки 3M (x2)

Другие материалы:

  • Оргстекло
  • Глянцевая бумага
  • короткие доски (деревянные)
  • Акриловая краска (темно-зеленая и кремовая) x2
  • Тонкий картон
  • 10 мм круглые магниты (2 шт.)
  • Фигуры пешки и ферзя
  • Паяльник и паяльные материалы

Пора объяснить, как все было сделано . Следуйте пошаговому описанию:

1. Возьмите картон 21x21 см, а также немного дополнительного картона, чтобы вырезать и приклеить стенки верхней части доски, чтобы получилось 16 квадратов с пронумерованными A B C D 1 2 3 4. Поскольку картон тонкий, вы можете вставить в каждый квадрат 16 датчиков Холла с 3 ножками на каждой и 16 светодиодов с 2 ножками на каждой.

2. После того, как вы установите компоненты, вам нужно будет сделать пайку, чтобы припаять ножки датчиков Холла и светодиодов к перемычкам. На этом этапе я бы порекомендовал разумно выбирать цветные провода, чтобы вы не запутались с + и - ножками светодиодов, а также ножками VCC, GND и PIN датчиков на эффекте Холла. Можно, конечно, распечатать плату с датчиками и даже уже припаянными светодиодами типа WS2812, но я решил упростить проект и сделать еще немного «ручной работы». На этом этапе все, что вам нужно сделать, это подготовить шнуры и датчики, на более поздних этапах, следуя схеме Fritzing, вы можете увидеть, где вы должны прикрепить конец каждого провода. Вскоре некоторые из них будут подключаться непосредственно к контактам на Arduino Mega (на Arduino их достаточно), другие - к макетной плате, и все GND могут быть припаяны к одному куску шнура (создавая общую землю), который позже должен быть подключен к GND на плате Arduino. Одно важное замечание:датчики на эффекте Холла ВСЕ НАПРАВЛЕННЫ, что означает, что не имеет значения, какой полюс магнита будет находиться рядом с датчиком, он будет отправлять 0 данных, когда поблизости есть некоторое магнитное поле, и 1, когда его нет, а именно, магнит находится далеко (скажем, на расстоянии 5 см) от датчика.

3. Подготовьте аналогичный картон размером 21x21 см и закрепите на нем Arduino Mega и длинный макет. Вы также можете снова вырезать из картона 4 стены любой желаемой высоты и приклеить их вертикально этими двумя слоями квадратных досок 21x21 см. Затем следуйте схемам Fritzing Schematics, чтобы все настроить. Вы также можете настроить считыватель RFID после того, как закончите со светодиодами и датчиками Холла.

4. Проверьте, работают ли все светодиоды и датчики, отправив сигналы с использованием основных кодов. Не избегайте этого шага, так как он позволит вам проверить, все ли работает правильно, и перейти к дальнейшему построению платы.

5. Подготовьте пешку и ферзя, прикрепив снизу два магнита радиусом 10 см, а также круглые RFID-метки. Позже вам нужно будет прочитать идентификаторы этих тегов с последовательного экрана в Arduino IDE.

6. Если все работает отлично, можете запустить основной код и попробовать!

7 (необязательно). Вы можете поработать с деревом, что придаст вашей демонстрации более естественный вид. Это зависит от вашей воли и воображения.

Вот несколько видео и фото с разных этапов:

Спасибо за Ваше внимание! Протестируйте все и не стесняйтесь писать в комментариях о любых пропущенных мною ошибках, улучшениях, предложениях и т. Д. Будем рады услышать некоторые мнения о проекте. Если вам нужна какая-либо помощь по проекту, напишите мне (miriyevt @ gmail .com) или добавьте в Skype (tahir.miriyev9r1), чтобы мы могли запланировать беседу и подробно обсудить вещи. Удачи!

Код

  • thinK_code.ino
thinK_code.ino Arduino
Я старался оставлять как можно больше комментариев, чтобы сделать процесс анализа кода понятным. Честно говоря, логика может показаться немного сложной на первый взгляд, но если вы углубитесь в логику кода, она будет выглядеть более исчерпывающей.

Примечание:как и на настоящей шахматной доске, я абстрактно пронумеровал квадраты как A1, A2, A3, A4, B1, ..., C1, ..., D1, .., D4. Однако в коде использовать эту нотацию нецелесообразно. Поэтому я использовал массивы и представил квадраты как 00, 01, 02, 03,10,11,12,13, ..., 32,33 соответственно.
 #include  SoftwareSerial RFID (11, 12); // ----------------------------------------------- ------------ НАЧАЛО ------------------------------------- -------------------------------------------------- ------ int empty_pos [2]; int figure_pos [2] [2]; // представление фигуры как матрицы двух векторов (ферзя и пешки) с тремя элементами (позиция x, позиция y и значение 1 (ферзь), 2 (пешка) int new_id [14] ={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; int id_type_matrix [4] [4] ={{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}; int temp =0; int queen_id [14] ={2, 53, 65, 48, 48, 56, 51, 49, 55, 70, 65, 51, 52, 3}; int pawn_id [14] ={2, 53, 65, 48, 48, 56, 51, 56, 67, 49, 56, 52, 68, 3}; int temp_vect [2]; int count =0; int ID =0; int yeni_id [14]; // исходная матрица массива для датчиков эффекта Холла int hes_bool_matrix [4] [4]; // список эффектов Холла выводы датчиков на Arduinoconst int hes_00 =44; const int hes_01 =45; const int hes_02 =46; const int hes_03 =47; const int hes_10 =48; const int hes_11 =49; const int hes_12 =50; const int hes_13 =2; const int hes_20 =3; const int hes_21 =4; const int hes_22 =5; const int hes_23 =6; const int hes_30 =7; const int hes_31 =8; const int hes_32 =9; const int hes_33 =10; int hes_pin_matrix [4] [4] ={{hes_00, он s_01, hes_02, hes_03}, {hes_10, hes_11, hes_12, hes_13}, {hes_20, hes_21, hes_22, hes_23}, {hes_30, hes_31, hes_32, hes_33}}; // LED pinsconst int led_00 =22 =23; const int led_02 =24; const int led_03 =25; const int led_10 =26; const int led_11 =27; const int led_12 =28; const int led_13 =29; const int led_20 =30; const int led_21 =31; const int led_22 =32; const int led_23 =33; const int led_30 =34; const int led_31 =35; const int led_32 =36; const int led_33 =37; int led_matrix [4] [4] ={{led_00, led_01, led_02, led_03}, {led_10, led_11, led_12, led_13}, {led_20, led_21, led_22, led_23}, {led_30, led_31, led_32, led_33}}; // ---------- ------------------------------------------- ОБЛАСТЬ НАСТРОЙКИ ----- -------------------------------------------------- -------------------------- void setup () {RFID.begin (9600); Serial.begin (9600); // режимы чтения (ввода) для датчиков Холла pinMode (hes_01, INPUT); pinMode (hes_02, ВХОД); pinMode (hes_03, ВХОД); pinMode (hes_00, ВХОД); pinMode (hes_10, ВХОД); pinMode (hes_11, ВХОД); pinMode (hes_12, ВХОД); pinMode (hes_13, ВХОД); pinMode (hes_20, ВХОД); pinMode (hes_21, ВХОД); pinMode (hes_22, ВХОД); pinMode (hes_23, ВХОД); pinMode (hes_30, ВХОД); pinMode (hes_31, ВХОД); pinMode (hes_32, ВХОД); pinMode (hes_33, ВХОД); // запись (вывод) режимов для выводов светодиода pinMode (led_00, OUTPUT); pinMode (led_01, ВЫХОД); pinMode (led_02, ВЫХОД); pinMode (led_03, ВЫХОД); pinMode (led_10, ВЫХОД); pinMode (led_11, ВЫХОД); pinMode (led_12, ВЫХОД); pinMode (led_13, ВЫХОД); pinMode (led_20, ВЫХОД); pinMode (led_21, ВЫХОД); pinMode (led_22, ВЫХОД); pinMode (led_23, ВЫХОД); pinMode (led_30, ВЫХОД); pinMode (led_31, ВЫХОД); pinMode (led_32, ВЫХОД); pinMode (led_33, ВЫХОД); read_tags (); задержка (1000); first_figure (); задержка (1000); Serial.end (); RFID.end (); задержка (5000); Serial.begin (9600); задержка (1000); RFID.begin (9600); задержка (1000); read_tags (); задержка (5000); // RFID.flush (); // останавливает многократное чтение second_figure (); delay (1000); // id_type_matrix [0] [2] =2; // id_type_matrix [2] [1] =1;} // ------------------ --------------------------------- ОБЛАСТЬ ФУНКЦИЙ --------------- --------------------------------------------- // --- ------------------------------------- Отслеживание идентификаторов RFID и распознавание фигур ------- ---------------------------------------- логическое значение compare_ID (int aa [14], int bb [14]) {логическое значение ff =false; int fg =0; for (int cc =0; cc <14; cc ++) {если (aa [cc] ==bb [cc]) {fg ++; }} если (fg ==14) {ff =true; } return ff;} int read_tags () {Serial.println ("Поместите рисунок рядом с RFID-считывателем"); задержка (5000); RFID.flush (); // останавливает многократное чтение if (RFID.available ()> 0) {delay (300); для (int z =0; z <14; z ++) {ID =RFID.read (); new_id [z] =ID; Serial.println (новый_ид [z], DEC); задержка (500); }} Serial.println («Считывание идентификатора завершено»); ++ count; задержка (5000); // время поместить фигурку на доску и вторую перед RFID-считывателемreturn new_id;} void first_figure () {if (compare_ID (new_id, queen_id) ==true) {Serial.println ("КОРОЛЕВА ОБНАРУЖЕНА" ); for (int s =0; s <=3; s ++) {for (int t =0; t <=3; t ++) {if (digitalRead (hes_pin_matrix [s] [t]) ==0) {id_type_matrix [s ] [t] =1; temp_vect [0] =с; temp_vect [1] =t; Serial.print («Королева помещается на:»); Серийный. Отпечаток (ы); Serial.println (t); digitalWrite (led_matrix [s] [t], HIGH); задержка (1000); digitalWrite (led_matrix [s] [t], LOW); }}}} else if (compare_ID (new_id, pawn_id) ==true) {Serial.println («PAWN IS DETECTED»); for (int s =0; s <=3; s ++) {for (int t =0; t <=3; t ++) {if (digitalRead (hes_pin_matrix [s] [t]) ==0) {id_type_matrix [s ] [t] =2; temp_vect [0] =с; temp_vect [1] =t; Serial.print («Пешка помещается на:»); Серийный. Отпечаток (ы); Serial.println (t); digitalWrite (led_matrix [s] [t], HIGH); задержка (1000); digitalWrite (led_matrix [s] [t], LOW); }}}} else {Serial.println («Неопределенная цифра»); }} void second_figure () {if (compare_ID (new_id, queen_id) ==true) {Serial.println («КОРОЛЕВА ОБНАРУЖЕНА»); for (int s =0; s <=3; s ++) {for (int t =0; t <=3; t ++) {if (digitalRead (hes_pin_matrix [s] [t]) ==0 &&(s! =temp_vect [0] || t! =temp_vect [1])) {id_type_matrix [s] [t] =1; Serial.print («Королева помещается на:»); Серийный. Отпечаток (ы); Serial.println (t); digitalWrite (led_matrix [s] [t], HIGH); задержка (1000); digitalWrite (led_matrix [s] [t], LOW); }}}} else if (compare_ID (new_id, pawn_id) ==true) {Serial.println («PAWN IS DETECTED»); for (int s =0; s <=3; s ++) {for (int t =0; t <=3; t ++) {if (digitalRead (hes_pin_matrix [s] [t]) ==0 &&(s! =temp_vect [0] || t! =temp_vect [1])) {id_type_matrix [s] [t] =2; Serial.print («Пешка помещается на:»); Серийный. Отпечаток (ы); Serial.println (t); digitalWrite (led_matrix [s] [t], HIGH); задержка (1000); digitalWrite (led_matrix [s] [t], LOW); }}}}} // ------------------------------------------- ---- ПОИСК ЦИФР -------------------------------------------- ----------------------------- // дополнительная функция для выключения светодиодов только когда вы кладете фигуру обратно на доскуvoid leds_off () {int i, j; for (i =0; i <=3; i ++) {for (j =0; j <=3; j ++) {digitalWrite (led_matrix [i] [j], LOW); }}} // --------------------------------------------- ---- ДВИЖУЩАЯСЯ КОРОЛЕВА -------------------------------------------- -------------------------------------------------- --void move_queen () {int i, j; for (i =empty_pos [0]; i <3;) {digitalWrite (led_matrix [++ i] [empty_pos [1]], HIGH); // свет вдоль вертикальной линии} for (i =empty_pos [0]; i> 0;) {digitalWrite (led_matrix [- i] [empty_pos [1]], HIGH); } for (i =empty_pos [1]; i <3;) {digitalWrite (led_matrix [empty_pos [0]] [++ i], HIGH); // свет вдоль горизонтальной линии} for (i =empty_pos [1]; i> 0;) {digitalWrite (led_matrix [empty_pos [0]] [- i], HIGH); } i =empty_pos [0]; j =empty_pos [1]; for (i =i - 3, j =j - 3; i <=3, j <=3; i ++, j ++) {if (i> =0 &&j> =0 &&i! =empty_pos [0]) { Serial.print (i); Serial.println (j); digitalWrite (led_matrix [i] [j], HIGH); }} я =пустая_позиция [0]; j =empty_pos [1]; for (i =i + 3, j =j - 3; i> =0, j <=3; i--, j ++) {if (i> =0 &&i <=3 &&j> =0 &&j <=3 &&i! =Empty_pos [0]) {Serial.print (i); Serial.println (j); digitalWrite (led_matrix [i] [j], HIGH); }}} // ------------------------------------- начинаем читать количество цифр и сохранять позиции для каждого из них -------------------------- void figure_reading () {// считываем все позиции в цикле, чтобы определить позицию пешки int i, j, found_figure =0; начало:found_figure =0; // считываем все занятые (0) и пустые (1) позиции на доске // присваиваем 0 (=пустой квадрат), 1 (=занятый квадрат) переменной hes_bool_matrix [0] [0] =digitalRead (hes_00); hes_bool_matrix [0] [1] =digitalRead (hes_01); hes_bool_matrix [0] [2] =digitalRead (hes_02); hes_bool_matrix [0] [3] =digitalRead (hes_03); hes_bool_matrix [1] [0] =digitalRead (hes_10); hes_bool_matrix [1] [1] =digitalRead (hes_11); hes_bool_matrix [1] [2] =digitalRead (hes_12); hes_bool_matrix [1] [3] =digitalRead (hes_13); hes_bool_matrix [2] [0] =digitalRead (hes_20); hes_bool_matrix [2] [1] =digitalRead (hes_21); hes_bool_matrix [2] [2] =digitalRead (hes_22); hes_bool_matrix [2] [3] =digitalRead (hes_23); hes_bool_matrix [3] [0] =digitalRead (hes_30); hes_bool_matrix [3] [1] =digitalRead (hes_31); hes_bool_matrix [3] [2] =digitalRead (hes_32); hes_bool_matrix [3] [3] =digitalRead (hes_33); for (i =0; i <=3; i ++) {for (j =0; j <=3; j ++) {if (hes_bool_matrix [i] [j] ==0) {found_figure ++; if (found_figure ==1) {if (id_type_matrix [i] [j] ==0) {id_type_matrix [i] [j] =temp; темп =0; } if (id_type_matrix [i] [j] ==1) {Serial.print ("Королева стоит на:"); Serial.print (i); Serial.println (j); figure_pos [0] [0] =я; figure_pos [0] [1] =j; } else if (id_type_matrix [i] [j] ==2) {Serial.print ("Пешка стоит на:"); Serial.print (i); Serial.println (j); figure_pos [0] [0] =я; figure_pos [0] [1] =j; // if (id_type_matrix [i] [j] ==0) {// id_type_matrix [i] [j] =temp; // temp =0; }}}} else if (found_figure ==2) {if (id_type_matrix [i] [j] ==0) {id_type_matrix [i] [j] =temp; темп =0; } if (id_type_matrix [i] [j] ==1) {Serial.print ("Королева стоит на:"); Serial.print (i); Serial.println (j); figure_pos [1] [0] =я; figure_pos [1] [1] =j; // if (id_type_matrix [i] [j] ==0) {// id_type_matrix [i] [j] =temp; // temp =0; }} else if (id_type_matrix [i] [j] ==2) {Serial.print ("Пешка стоит на:"); Serial.print (i); Serial.println (j); figure_pos [1] [0] =я; figure_pos [1] [1] =j; // if (id_type_matrix [i] [j] ==0) {// id_type_matrix [i] [j] =temp; // temp =0; } // выйти; }}}}} out:if (found_figure ==0 || found_figure ==1) {goto start; } иначе, если (found_figure ==2) {leds_off (); } //---------------------------------------------- мы выберите, какую цифру выбрать --------------------------------------------- -------------------- empty_pos [0] =-1; задержка (2000); если (digitalRead (hes_pin_matrix [figure_pos [0] [0]] [figure_pos [0] [1]]) ==1) {empty_pos [0] =figure_pos [0] [0]; empty_pos [1] =figure_pos [0] [1]; temp =id_type_matrix [empty_pos [0]] [empty_pos [1]]; id_type_matrix [empty_pos [0]] [empty_pos [1]] =0; } else if (digitalRead (hes_pin_matrix [figure_pos [1] [0]] [figure_pos [1] [1]]) ==1) {empty_pos [0] =figure_pos [1] [0]; empty_pos [1] =figure_pos [1] [1]; temp =id_type_matrix [empty_pos [0]] [empty_pos [1]]; id_type_matrix [empty_pos [0]] [empty_pos [1]] =0; } // ------------------------------------------- ДВИЖУЩАЯСЯ ПАВКА или КОРОЛЕВА -------------------------------------------------- -------------------------------------------------- если (temp ==1) {если (empty_pos [0]! =-1) {move_queen (); перейти к началу; }} else if (temp ==2) {if (empty_pos [0]! =-1) {if (empty_pos [0] <2) {digitalWrite (led_matrix [empty_pos [0] + 1] [empty_pos [1]] , ВЫСОКИЙ); digitalWrite (led_matrix [empty_pos [0] + 2] [empty_pos [1]], HIGH); } else if (empty_pos [0] ==2) {digitalWrite (led_matrix [empty_pos [0] + 1] [empty_pos [1]], HIGH); } еще; } delay (100);} figure_reading ();} // ------------------------------------ --------------------------------- цикл начинается --------------- -------------------------------------------------- ------------------- void loop () {figure_reading ();} 

Схема

Я знаю, что схемы немного сложны, но идея должна быть ясной. Я впервые использовал Fritzing (кстати, очень рекомендую), наверное, связи можно было бы провести более точно. Во всяком случае, я записал все внутри схем.

Примечание:мне не удалось найти точную модель RDIF Reader среди компонентов в базе данных Fritzing. Я использовал модель RFID-модуля 125 кГц - UART. Вы можете найти на Youtube учебные пособия о том, как установить этот модуль с Arduino. 4x4demo_q0nvG3T3nS.fzz

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

  1. Ода прототипу
  2. Электронные чернила
  3. Прототип Raspoulette
  4. Прототипы литьевых форм против серийных литьевых форм
  5. Электронная кожа реагирует на боль
  6. Как выбрать компанию по производству прототипов печатных плат
  7. Важные определения прототипов печатных плат:Часть 2
  8. Что такое прототипирование?
  9. Введение в электронные насосы
  10. Понимание работы электронной системы зажигания