Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Papan Catur Elektronik (Prototipe Demo 4x4)

Komponen dan persediaan

Sensor Efek Hall
× 16
Ukuran Penuh Papan Tempat Memotong Roti Tanpa Solder
× 1
LED (generik)
× 16
Pembaca RFID (generik)
Pembaca dan Antena RFID 125 kHz
× 1
Arduino Mega 2560
× 1
Tag RFID 3M
× 2

Alat dan mesin yang diperlukan

plexiglass
Kertas mengkilap
papan kayu
Cat akrilik (hijau tua dan krem) x2
Magnet bulat 10 mm
Pion dan bidak catur Ratu
Besi solder dan bahan solder

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Hai pembuat,

Saya Tahir Miriyev, lulusan 2018 dari Universitas Teknik Timur Tengah, Ankara/Turki. Saya mengambil jurusan Matematika Terapan, tapi saya selalu suka membuat sesuatu, terutama ketika itu melibatkan beberapa pekerjaan tangan dengan elektronik, desain dan pemrograman. Berkat kursus unik tentang pembuatan prototipe, yang ditawarkan di departemen Desain Industri kami, saya mendapat kesempatan untuk membuat sesuatu yang sangat menarik. Proyek dapat diperlakukan sebagai Proyek Berjangka, berlangsung selama satu semester penuh (4 bulan). Siswa diberi tugas untuk menemukan pendekatan kreatif untuk merancang produk/demo yang sudah ada dan mewujudkan ide mereka menggunakan mikrokontroler dan sensor Arduino. Saya sedang berpikir tentang catur, dan setelah melakukan beberapa penelitian pada proyek-proyek yang sukses, saya perhatikan bahwa dalam proyek-proyek sebelumnya pembuat pada dasarnya menggunakan mesin catur siap pakai (di mana semua gerakan dari setiap gambar diprogram dalam inti), bersama dengan Raspberry Pi, beberapa MUX. , LED dan sakelar buluh. Namun, dalam proyek saya, saya memutuskan untuk menyingkirkan perangkat lunak eksternal apa pun dalam hal mesin catur, dan untuk menemukan solusi kreatif untuk masalah Pengenalan Gambar, menggunakan pembaca RFID, sensor efek Hall, dan Arduino Mega.

Sederhananya, misalkan Anda memiliki papan catur dengan "otak" =mikrokontroler, dan Anda harus membuat papan Anda memahami gambar mana yang Anda pegang dan di mana Anda meletakkannya. Ini adalah masalah Pengenalan Gambar. Solusi untuk masalah ini adalah sepele ketika Anda memiliki mesin catur dengan semua bidak berdiri di posisi awal mereka di papan. Sebelum saya menjelaskan mengapa demikian, izinkan saya membuat beberapa komentar.

Bagi mereka yang antusias dengan cara kerja di sini, saya harus menjelaskan mengapa kita memerlukan sakelar buluh (atau dalam kasus saya, saya menggunakan sensor efek Hall):jika Anda menempatkan magnet di bawah setiap bagian dan mengambilnya dari kotak di papan (dengan asumsi bahwa ada saklar buluh di bawah setiap kotak) karena ada/tidak adanya medan magnet di atas sensor, Anda dapat membuat pengontrol Anda memahami apakah ada/tidak ada bagian yang berdiri di kotak. Namun, itu masih tidak memberi tahu mikrokontroler apa pun tentang bagian mana yang berdiri di atas alun-alun. Ini hanya mengatakan bahwa ada/tidak ada potongan di kotak. Pada titik ini, kita berhadapan dengan masalah Pengenalan Angka, yang dapat diselesaikan dengan menggunakan mesin catur, dengan semua bidak ditempatkan pada posisi awalnya saat permainan catur dimulai. Dengan cara ini mikrokontroler "tahu" di mana setiap bagian berdiri sejak awal, dengan semua alamat tetap di memori. Namun demikian, ini memberi kita batasan besar:Anda tidak dapat memilih, katakanlah, sejumlah keping dan menempatkannya secara acak di mana saja di papan dan mulai menganalisis permainan. Anda selalu harus memulai dari awal, semua bagian harus berada di papan awalnya, karena ini adalah satu-satunya cara bagi mikrokontroler untuk melacak lokasinya setelah Anda mengangkat sepotong dan meletakkannya di kotak lain. Intinya, ini adalah masalah yang saya perhatikan dan saya putuskan untuk kerjakan.

Solusi saya cukup sederhana, meskipun kreatif. Saya menempatkan pembaca RFID di sisi depan papan. Sementara itu, saya tidak hanya memasang magnet di bawah potongan tetapi juga tag RFID, dengan masing-masing bagian memiliki ID unik. Oleh karena itu, sebelum Anda menempatkan gambar pada kotak mana pun yang diinginkan, pertama-tama Anda dapat memegang potongan tersebut dekat dengan pembaca RFID dan membiarkannya membaca ID, mengidentifikasi potongan tersebut, menyimpannya dalam memori, dan kemudian Anda dapat menempatkannya di mana pun Anda inginkan. Selain itu, alih-alih menggunakan sakelar buluh, untuk menyederhanakan desain sirkuit, saya menggunakan sensor efek Hall, yang bekerja dengan cara yang sama, dengan satu-satunya perbedaan mengirim 0 atau 1 ke mikrokontroler sebagai data digital, yang menandakan "ada" atau "tidak ada" setiap bagian di alun-alun, masing-masing. Saya menambahkan LED juga (sayangnya tidak dengan warna yang sama, tidak memilikinya), sehingga ketika Anda mengangkat potongan, semua lokasi persegi, di mana potongan yang diangkat dapat ditempatkan, akan menyala. Anggap saja sebagai praktik pendidikan untuk pelajar catur :)

Terakhir, saya ingin mencatat bahwa meskipun saya menggunakan beberapa teknik, proyek ini tetap sederhana dan dapat dimengerti, tidak terlalu rumit atau terlalu rumit. Saya tidak punya cukup waktu untuk melanjutkan dengan papan catur 8x8 (juga karena 64 sensor efek Hall mahal di Turki, saya menanggung semua biaya yang terkait dengan proyek), itu sebabnya saya melakukan versi demo 4x4 dengan hanya dua buah yang diuji:Pion dan Ratu . Alih-alih menggunakan mesin catur, saya menulis kode sumber untuk Arduino, yang menghasilkan segalanya.

Sebelum kita melanjutkan ke langkah demi langkah penjelasan tentang bagaimana proyek ini dilakukan, saya akan merekomendasikan untuk menonton video ilustrasi dan mendapatkan beberapa ide intuitif tentang apa yang saya bicarakan.

Catatan #1:Salah satu LED merah (pertama di baris/ dari kiri ke kanan) padam, tidak apa-apa.

Catatan #2:Meskipun banyak digunakan, dari pengalaman saya, saya dapat mengatakan bahwa teknologi RFID bukanlah ide terbaik untuk digunakan dalam aplikasi DIY (tentu saja jika Anda memiliki alternatif). Sebelum semuanya berhasil, saya melakukan banyak uji coba dengan meletakkan bidak catur di dekat pembaca dan menunggu sampai membaca ID dengan benar. Port serial harus diatur untuk itu karena cara pembaca RFID membaca ID hanya membuat pusing. Seseorang harus mencoba sendiri untuk memahami masalah ini.

Berikut adalah daftar semua alat Saya menggunakan untuk proyek ini:

Komponen elektronik:

  • Breadboard (x1)
  • A1126LUA-T Omnidirectional (IC-1126 SW OMNI 3-SIP ALLEGRO) Sensor efek hall (x16)
  • LED 5 mm dasar (x16)
  • Kabel jumper
  • Pembaca dan Antena RFID 125 kHz (x1)
  • Arduino Mega (x1)
  • Tag 3M RFID (x2)

Materi lain:

  • Plexiglass
  • Kertas mengkilap
  • Papan pendek (kayu)
  • Cat akrilik (hijau tua dan krem) x2
  • Karton tipis
  • Magnet bulat 10 mm (x2)
  • Pion dan bidak Ratu
  • Besi solder dan bahan solder

Saatnya menjelaskan bagaimana segala sesuatu dibuat. Silakan ikuti deskripsi langkah demi langkah:

1. Ambil karton berukuran 21x21 cm, serta beberapa karton tambahan untuk memotong dan merekatkan dinding papan bagian atas, sehingga menjadi 16 kotak dengan bilangan A B C D 1 2 3 4. Karena karton tipis, Anda dapat menempelkan 16 sensor efek Hall ke setiap kotak, dengan masing-masing 3 kaki dan 16 LED dengan masing-masing 2 kaki.

2. Setelah Anda mengatur komponen, Anda perlu melakukan beberapa penyolderan, untuk menyolder kaki sensor efek Hall dan LED ke kabel jumper. Pada titik ini, saya akan merekomendasikan memilih kabel berwarna dengan cara yang cerdas, sehingga Anda tidak akan bingung dengan kaki + dan - LED, juga kaki VCC, GND dan PIN dari sensor efek Hall. Tentu saja, seseorang mungkin mencetak PCB dengan sensor dan bahkan jenis LED WS2812 yang sudah disolder, tetapi saya memutuskan untuk membuat proyek tetap sederhana dan melakukan lebih banyak "pekerjaan tangan". Pada titik ini, yang harus Anda lakukan adalah menyiapkan kabel dan sensor, pada tahap selanjutnya mengikuti skema Fritzing Anda dapat melihat di mana Anda harus memasang ujung setiap kabel. Tak lama, beberapa dari mereka akan langsung ke PIN di Arduino Mega (ada cukup banyak di Arduino), yang lain ke papan tempat memotong roti dan semua GND dapat disolder ke satu kabel (membuat kesamaan) yang nantinya harus terhubung ke GND di papan Arduino. Satu catatan penting di sini:Sensor efek hall bersifat OMNIDIRECTIONAL, yang berarti tidak masalah kutub magnet mana yang akan dipegang dekat dengan sensor, sensor akan mengirimkan 0 data saat ada medan magnet di dekatnya dan 1 saat tidak ada, yaitu, magnet menjauh (lebih jauh dari katakanlah 5 sm) dari sensor.

3. Siapkan karton serupa 21x21 cm dan pasang Arduino Mega dan papan tempat memotong roti panjang di atasnya. Anda juga dapat memotong lagi 4 dinding dengan ketinggian yang diinginkan dari karton, dan merekatkannya secara vertikal dengan dua lapisan papan persegi berukuran 21x21 cm itu. Kemudian ikuti Fritzing Schematics untuk mengatur semuanya. Anda juga dapat menyetel pembaca RFID setelah selesai menggunakan LED dan sensor efek Hall.

4. Uji apakah semua LED dan sensor berfungsi, dengan mengirimkan sinyal menggunakan kode dasar. Jangan menghindari langkah ini karena akan memungkinkan Anda menguji apakah semuanya berfungsi dengan baik dan lolos ke konstruksi papan lebih lanjut.

5. Siapkan Pion dan Queen, dengan dua magnet berjari-jari 10 cm terpasang di bawah, serta tag RFID bulat. Nanti, Anda harus membaca ID tag tersebut dari Serial Screen di Arduino IDE.

6. Jika semuanya berjalan dengan baik, Anda dapat memulai kode utama dan mencoba semuanya!

7 (opsional). Anda dapat melakukan beberapa karya artistik dengan kayu yang akan memberikan tampilan yang lebih alami pada demo Anda. Terserah keinginan dan imajinasi Anda.

Berikut adalah beberapa video dan foto dari berbagai tahapan:

Terima kasih atas perhatian Anda! Uji semuanya dan bebas untuk menulis di komentar tentang segala jenis kesalahan yang saya lewatkan, perbaikan, saran, dll. Berharap untuk mendengar beberapa pendapat tentang proyek ini. Jika Anda memerlukan bantuan apa pun dengan proyek ini, kirimkan saya email (miriyevt@gmail .com) atau tambahkan di Skype (tahir.miriyev9r1), sehingga kami dapat menjadwalkan percakapan dan mendiskusikan berbagai hal secara detail. Semoga berhasil!

Kode

  • thinK_code.ino
thinK_code.inoArduino
Saya mencoba meninggalkan komentar sebanyak mungkin, agar proses analisis kode dapat dimengerti. Sejujurnya, logikanya mungkin tampak agak rumit dari pandangan pertama, tetapi jika Anda menggali lebih dalam logika kodenya, itu akan terlihat lebih komprehensif.

Catatan:Mirip dengan papan catur asli, saya secara abstrak menomori kotak sebagai A1, A2, A3, A4, B1, ..., C1, ... ,D1,.., D4. Namun, dalam kode, tidak praktis menggunakan notasi ini. Oleh karena itu saya menggunakan array dan merepresentasikan kotak masing-masing sebagai 00, 01, 02, 03,10,11,12,13,..., 32,33.
#include SoftwareSerial RFID(11, 12);//------------------------------------------------ ------------ MULAILAH ------------------------------------- -------------------------------------------------- ------int empty_pos[2];int figure_pos[2][2]; //memikirkan posisi gambar sebagai matriks dari dua vektor(ratu dan pion) dengan tiga entri(x pos, y pos, dan nilai 1(ratu), 2(pion)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]; //matriks array awal untuk sensor hall-effectint hes_bool_matrix[4][4];// list of Hall-effect pin sensor pada 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, he 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}};//---------- ------------------------------------------- WILAYAH PENYIAPAN ----- -------------------------------------------------- ---------------pengaturan batal() { RFID.begin(9600); Serial.begin(9600); //mode membaca(input) untuk sensor hall-effect pinMode(hes_01, INPUT); pinMode(hes_02, INPUT); pinMode(hes_03, INPUT); pinMode(hes_00, INPUT); pinMode(hes_10, INPUT); pinMode(hes_11, INPUT); pinMode(hes_12, INPUT); pinMode(hes_13, INPUT); pinMode(hes_20, INPUT); pinMode(hes_21, INPUT); pinMode(hes_22, INPUT); pinMode(hes_23, INPUT); pinMode(hes_30, INPUT); pinMode(hes_31, INPUT); pinMode(hes_32, INPUT); pinMode(hes_33, INPUT); // mode penulisan(output) untuk pin LED pinMode(led_00, OUTPUT); pinMode(led_01, OUTPUT); pinMode(led_02, OUTPUT); pinMode(led_03, OUTPUT); pinMode(led_10, OUTPUT); pinMode(led_11, OUTPUT); pinMode(led_12, OUTPUT); pinMode(led_13, OUTPUT); pinMode(led_20, OUTPUT); pinMode(led_21, OUTPUT); pinMode(led_22, OUTPUT); pinMode(led_23, OUTPUT); pinMode(led_30, OUTPUT); pinMode(led_31, OUTPUT); pinMode(led_32, OUTPUT); pinMode(led_33, OUTPUT); baca_tag(); penundaan (1000); angka_pertama(); penundaan (1000); Serial.end(); RFID.akhir(); penundaan(5000); Serial.begin(9600); penundaan (1000); RFID.mulai (9600); penundaan (1000); baca_tag(); penundaan(5000); //RFID.flush(); // menghentikan beberapa pembacaan second_figure(); delay(1000);// id_type_matrix[0][2] =2;// id_type_matrix[2][1] =1;}//------------------ --------------------------------- FUNGSI AREA --------------- ----------------------------------------------//---- ------------------------------------- Pelacakan ID RFID dan Pengenalan Gambar------- ---------------------------------------- boolean compare_ID(int aa[14], int bb[14]){ boolean ff =false; int fg =0; for (int cc =0; cc <14; cc++) { if (aa[cc] ==bb[cc]) { fg++; } } jika (fg ==14) { ff =benar; } return ff;}int read_tags(){ Serial.println("Letakkan gambar di dekat pembaca RFID"); penundaan(5000); RFID.flush(); // menghentikan beberapa pembacaan if (RFID.available()> 0) { delay(300); for (int z =0; z <14; z++) { ID =RFID.read(); new_id[z] =ID; Serial.println(new_id[z], DEC); penundaan (500); } } Serial.println("Pembacaan ID selesai "); ++ menghitung; penundaan(5000); //waktu untuk menempatkan gambar ke papan dan yang kedua di depan pembaca RFIDreturn new_id;}void first_figure() { if (compare_ID(new_id, queen_id) ==true) { Serial.println("QUEEN 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] =1; temp_vect[0] =s; temp_vect[1] =t; Serial.print("Ratu ditempatkan ke:"); Serial.print(s); Serial.println(t); digitalWrite(led_matrix[s][t],HIGH); penundaan (1000); digitalWrite(led_matrix[s][t],LOW); } } } } else if (compare_ID(new_id, pawn_id) ==true) { Serial.println("PAWN TERDETEKSI"); 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] =s; temp_vect[1] =t; Serial.print("Pion ditempatkan pada:"); Serial.print(s); Serial.println(t); digitalWrite(led_matrix[s][t],HIGH); penundaan (1000); digitalWrite(led_matrix[s][t],LOW); } } } } else { Serial.println("Angka tidak ditentukan "); }}void second_figure() { if (compare_ID(new_id, queen_id) ==true) { Serial.println("QUEEN 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] =1; Serial.print("Ratu ditempatkan ke:"); Serial.print(s); Serial.println(t); digitalWrite(led_matrix[s][t],HIGH); penundaan (1000); digitalWrite(led_matrix[s][t],LOW); } } } } else if (compare_ID(new_id, pawn_id) ==true) { Serial.println("PAWN TERDETEKSI"); 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("Pion ditempatkan pada:"); Serial.print(s); Serial.println(t); digitalWrite(led_matrix[s][t],HIGH); penundaan (1000); digitalWrite(led_matrix[s][t],LOW); } } } }}//------------------------------------------- ---- MENEMUKAN ANGKA-------------------------------------------- -----------------------------//fungsi tambahan untuk mematikan led hanya ketika Anda menempatkan kembali gambar ke boardvoid leds_off() { int i, j; for (i =0; i <=3; i++) { for (j =0; j <=3; j++) { digitalWrite(led_matrix[i][j], LOW); } }}//-------------------------------------------------------- ---- RATU BERGERAK--------------------------------------------- -------------------------------------------------- --void move_queen() { int i, j; for (i =kosong_pos[0]; i <3;) { digitalWrite(led_matrix[++i][kosong_pos[1]], TINGGI); //cahaya sepanjang garis vertikal } for (i =pos_kosong[0]; i> 0;) { digitalWrite(led_matrix[--i][pos_kosong[1]], HIGH); } for (i =kosong_pos[1]; i <3;) { digitalWrite(led_matrix[pos_kosong[0]][++i], TINGGI); //menyalakan sepanjang garis horizontal } for (i =kosong_pos[1]; i> 0;) { digitalWrite(led_matrix[pos_kosong[0]][--i], HIGH); } i =empty_pos[0]; j =kosong_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], TINGGI); } } i =empty_pos[0]; j =kosong_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], TINGGI); } } }//-------------------------------------- mulai membaca jumlah angka dan menyimpan posisi untuk masing-masing dari mereka---------------void figure_reading() { //membaca semua posisi dalam satu lingkaran untuk mendeteksi posisi pion int i, j, found_figure =0;mulai:found_figure =0; //membaca semua posisi terisi(0) dan kosong(1) di papan //menetapkan 0(=kotak kosong), 1(=kotak terisi) ke variabel 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 (ditemukan_figure ==1) { if (id_type_matrix[i][j] ==0) { id_type_matrix[i][j] =temp; suhu =0; } if(id_type_matrix[i][j]==1){ Serial.print("Ratu berdiri di:"); Serial.print(i); Serial.println(j); angka_pos[0][0] =saya; figure_pos[0][1] =j; } else if(id_type_matrix[i][j]==2){ Serial.print("Pion berdiri di:"); Serial.print(i); Serial.println(j); angka_pos[0][0] =saya; figure_pos[0][1] =j; //jika (id_type_matrix[i][j] ==0) { //id_type_matrix[i][j] =temp; //suhu =0; }} } } else if (found_figure ==2) { if (id_type_matrix[i][j] ==0) { id_type_matrix[i][j] =temp; suhu =0; } if(id_type_matrix[i][j]==1){ Serial.print("Ratu berdiri di:"); Serial.print(i); Serial.println(j); figure_pos[1][0] =i; figure_pos[1][1] =j; //jika (id_type_matrix[i][j] ==0) { //id_type_matrix[i][j] =temp; //suhu =0; } } else if(id_type_matrix[i][j]==2){Serial.print("Pion berdiri di atas:"); Serial.print(i); Serial.println(j); figure_pos[1][0] =i; figure_pos[1][1] =j;// if (id_type_matrix[i][j] ==0) {// id_type_matrix[i][j] =temp;// temp =0; } //keluar; } } } }} out:if (found_figure ==0 || found_figure ==1) { goto start; } else if (found_figure ==2) { leds_off(); } //---------------------------------------------- kami pilih gambar mana yang akan dipilih --------------------------------------------- -------------------- empty_pos[0] =-1; penundaan(2000); if (digitalRead(hes_pin_matrix[figure_pos[0][0]][figure_pos[0][1]]) ==1) { empty_pos[0] =figure_pos[0][0]; kosong_pos[1] =angka_pos[0][1]; temp =id_type_matrix[pos_kosong[0]][pos_kosong[1]]; id_type_matrix[pos_kosong[0]][pos_kosong[1]] =0; } else if (digitalRead(hes_pin_matrix[figure_pos[1][0]][figure_pos[1][1]]) ==1) { empty_pos[0] =figure_pos[1][0]; kosong_pos[1] =angka_pos[1][1]; temp =id_type_matrix[pos_kosong[0]][pos_kosong[1]]; id_type_matrix[pos_kosong[0]][pos_kosong[1]] =0; } //------------------------------------------- MEMINDAHKAN GAMBAR atau RATU -------------------------------------------------- -------------------------------------------------- if(temp==1){ if ( empty_pos[0] !=-1) { move_queen(); harus mulai; } } else if(temp==2){if ( kosong_pos[0] !=-1) { if (pos_kosong[0] <2) { digitalWrite(led_matrix[pos_kosong[0] + 1][pos_kosong[1]] , TINGGI); digitalWrite(led_matrix[pos_kosong[0] + 2][pos_kosong[1]], TINGGI); } else if (pos_kosong[0] ==2) { digitalWrite(led_matrix[pos_kosong[0] + 1][pos_kosong[1]], TINGGI); } kalau tidak; } delay(100);} figure_reading();}//------------------------------------ ---------------------------------- loop dimulai --------------- -------------------------------------------------- -------------------void loop() { figure_reading();}

Skema

Skemanya sedikit rumit, saya tahu, tetapi idenya harus jelas. Ini adalah pertama kalinya saya menggunakan Fritzing (sangat disarankan), mungkin koneksi dapat ditarik lebih akurat. Bagaimanapun, saya mencatat semua yang ada di dalam skema.

Catatan:Saya tidak dapat menemukan model RDIF Reader yang tepat di antara komponen-komponen dalam database Fritzing. Model yang saya gunakan adalah modul RFID 125Khz - UART. Anda dapat menemukan tutorial di Youtube tentang cara mengatur modul ini dengan Arduino. 4x4demo_q0nvG3T3nS.fzz

Proses manufaktur

  1. Ode ke Prototipe
  2. Tinta Elektronik
  3. Prototipe Raspoulette
  4. Cetakan Injeksi Prototipe vs. Cetakan Injeksi Produksi
  5. Kulit Elektronik Bereaksi terhadap Rasa Sakit
  6. Cara Memilih Perusahaan Fabrikasi Prototipe PCB
  7. Definisi Penting Prototipe PCB :Bagian 2
  8. Apa itu prototipe?
  9. Pengantar Pompa Elektronik
  10. Memahami cara kerja sistem pengapian elektronik