Daftar Isi:

Arduino dan Touchpad Tic Tac Toe: 8 Langkah (dengan Gambar)
Arduino dan Touchpad Tic Tac Toe: 8 Langkah (dengan Gambar)

Video: Arduino dan Touchpad Tic Tac Toe: 8 Langkah (dengan Gambar)

Video: Arduino dan Touchpad Tic Tac Toe: 8 Langkah (dengan Gambar)
Video: TicTacToe with Arduino Nano and 0.96" OLED display (easy project for beginner) 2024, Juni
Anonim
Arduino dan Touchpad Tic Tac Toe
Arduino dan Touchpad Tic Tac Toe

Atau, latihan dalam multiplexing input dan output, dan bekerja dengan bit. Dan pengajuan untuk kontes Arduino.

Ini adalah implementasi dari permainan tic tac toe menggunakan array 3x3 LED dua warna untuk tampilan, touchpad resistif sederhana, dan Arduino untuk menyatukan semuanya. Untuk melihat cara kerjanya, lihat videonya:Apa yang dibutuhkan proyek ini:Suku cadang dan bahan habis pakai Satu papan perf (atau papan strip) Sembilan LED dua warna, katoda umum Sembilan resistor identik, dalam kisaran 100-220 ohm Enam resistor identik, di Kisaran 10kohm - 500kohm Satu tiang tunggal, sakelar lempar ganda Sekelompok pin header Seikat kawat listrik Satu lembar akrilik transparan persegi kecil, ~ 1 mm tebal, 8 cm di samping Pita lengket bening Heatshrinks (opsional) Semua hal di atas adalah barang yang cukup umum, total biaya tidak boleh melebihi USD$20. Alat Satu pengaturan Arduino (Arduino Duemilanove, Arduino IDE, komputer, kabel USB) Alat listrik biasa (multimeter, pistol solder solder, potongan kawat, pemotong kawat) Segala sesuatu yang berhubungan dengan Arduino dapat ditemukan di https://www.arduino.cc. Dengan membangun!

Langkah 1: Menghubungkan Matriks LED

Menghubungkan Matriks LED
Menghubungkan Matriks LED
Menghubungkan Matriks LED
Menghubungkan Matriks LED

Agar LED menyala, kedua ujungnya harus terhubung. Jika kita mendedikasikan sepasang pin ke masing-masing dari 18 LED (9 merah, 9 hijau), kita akan segera kehabisan pin di Arduino. Namun, dengan multiplexing, kita akan dapat menangani semua LED hanya dengan 9 pin! Untuk melakukan ini, LED dihubungkan dengan cara palang, seperti yang ditunjukkan pada gambar pertama. LED dikelompokkan dalam kolom tiga, dan katodanya dikelompokkan dalam baris enam. Dengan menetapkan tinggi jalur anoda tertentu, dan jalur katoda tertentu rendah, dan memiliki impedansi tinggi pada semua jalur anoda dan katoda lainnya, kita dapat pilih LED mana yang ingin kita nyalakan, karena hanya ada satu jalur yang mungkin dilalui arus. Misalnya, pada gambar kedua, menyetel anoda hijau 1 baris tinggi, dan jalur katoda 1 rendah, LED hijau kiri bawah menyala. Jalur saat ini dalam kasus ini ditampilkan dengan warna biru. Tetapi bagaimana jika Anda ingin menyalakan lebih dari satu LED pada jalur yang berbeda? Kami akan menggunakan kegigihan visi untuk mencapai ini. Dengan memilih pasangan garis LED dengan sangat cepat, ini memberikan ilusi bahwa semua LED yang dipilih menyala pada saat yang bersamaan.

Langkah 2: Tata Letak Matriks LED

Tata Letak Matriks LED
Tata Letak Matriks LED
Tata Letak Matriks LED
Tata Letak Matriks LED

Diagram rangkaian di bawah ini menunjukkan bagaimana LED dihubungkan secara fisik (G1-G9: LED hijau, R1-R9: LED merah). Diagram ini untuk LED merah dan hijau tunggal, jika Anda menggunakan LED merah/hijau katoda umum dua warna, hanya ada satu kaki katoda per pasangan merah/hijau yang harus Anda sambungkan. Garis anoda merah dan hijau masuk ke pin PWM dari Arduino (pin 3, 5, 6, 9, 10, 11 pada Duemilanove), sehingga kita dapat memiliki efek seperti memudar di kemudian hari. Jalur katoda masuk ke pin 4, 7 dan 8. Masing-masing jalur katoda dan anoda memiliki resistor 100 ohm untuk perlindungan.

Langkah 3: Mengatasi Matriks LED

Untuk kode tic tac toe, kita harus dapat menyimpan informasi berikut tentang LED: - apakah LED menyala atau tidak - jika menyala, apakah merah atau hijau Salah satu cara untuk melakukannya adalah dengan menyimpan status dalam larik 9 sel, menggunakan tiga digit untuk mewakili status (0 = mati, 1 = merah menyala, 2 = hijau menyala). Setiap kali kita perlu memeriksa status LED, misalnya, untuk memeriksa apakah ada kondisi menang, kita perlu menggilir array. Ini adalah metode yang bisa diterapkan, tetapi agak kikuk. Metode yang lebih ramping adalah dengan menggunakan dua kelompok sembilan bit. Kelompok sembilan bit pertama menyimpan status on-off LED, dan kelompok kedua sembilan bit menyimpan warna. Kemudian, memanipulasi status LED hanya menjadi masalah aritmatika bit dan pergeseran. Berikut ini contoh yang berhasil. Katakanlah kita menggambar grid tic tac toe kita secara grafis, dan pertama menggunakan 1s dan 0s untuk mewakili status on-off (1 on, 0 off): 000 000 = matriks dengan LED kiri bawah menyala 100 100 010 = matriks dengan diagonal LED menyala 001 Jika kita menghitung sel dari kiri bawah, kita dapat menulis representasi di atas sebagai rangkaian bit. Dalam kasus pertama, itu akan menjadi 100000000, dan dalam kasus kedua, itu akan menjadi 001010100. Jika kita menganggap ini sebagai representasi biner, maka setiap rangkaian bit dapat diringkas menjadi satu angka (256 dalam kasus pertama, 84 dalam kasus kedua). Jadi, alih-alih menggunakan array untuk menyimpan status matriks, kita bisa menggunakan satu angka saja! Demikian pula, kita dapat mewakili warna LED dengan cara yang sama (1 merah, 0 hijau). Mari kita asumsikan semua LED menyala (jadi status on-off diwakili oleh 511). Matriks di bawah ini kemudian akan mewakili status warna LED: 010 hijau, merah, hijau 101 merah, hijau, merah 010 hijau, merah, hijau Sekarang, saat menampilkan matriks LED, kita hanya perlu menggilir setiap bit, pertama dalam status on-off, dan kemudian dalam status warna. Sebagai contoh, katakanlah status on-off kita adalah 100100100, dan status warnanya adalah 010101010. Berikut algoritme kita untuk menyalakan matriks LED: Langkah 1. Lakukan penambahan bitwise dari status on-off dengan biner 1 (yaitu bit penyamaran). Langkah 2. Jika benar, maka LED menyala. Lakukan penambahan bitwise dari status warna dengan biner 1. Langkah 3. Jika benar, nyalakan LED merah. Jika salah, nyalakan LED hijau. Langkah 4. Geser baik status on-off dan status warna, satu bit ke kanan (yaitu pergeseran bit). Langkah 5. Ulangi Langkah 1 - 4 sampai semua sembilan bit telah dibaca. Perhatikan bahwa kita mengisi matriks secara terbalik - kita mulai dengan sel 9, kemudian melanjutkan kembali ke sel 1. Selain itu, status hidup-mati dan warna disimpan sebagai tipe integer tidak bertanda (word) alih-alih tipe integer bertanda. Itu karena dalam pergeseran bit, jika kita tidak hati-hati, kita mungkin secara tidak sengaja mengubah tanda variabel. Terlampir adalah kode untuk menyalakan matriks LED.

Langkah 4: Membangun Touch Pad

Membangun Touch Pad
Membangun Touch Pad
Membangun Touch Pad
Membangun Touch Pad
Membangun Touch Pad
Membangun Touch Pad
Membangun Touch Pad
Membangun Touch Pad

Touchpad dibuat dari lembaran akrilik tipis, cukup besar untuk melapisi matriks LED. Kemudian, rekatkan kabel baris dan kolom ke lembaran akrilik, menggunakan selotip bening. Pita bening juga digunakan sebagai penyekat pemisah antara kabel, di persimpangan. Pastikan untuk menggunakan alat yang bersih, untuk mencegah minyak jari masuk ke sisi perekat yang lengket. Noda sidik jari tidak hanya terlihat jelek, tetapi juga membuat selotip tidak terlalu lengket. Potong salah satu ujung setiap garis, dan solder ujung lainnya ke kawat yang lebih panjang. Solder resistor sejajar dengan kabel, sebelum menyolder pada konektor. Resistor yang digunakan di sini adalah 674k, tetapi nilai antara 10k dan 1M harus baik-baik saja. Sambungan ke Arduino dibuat menggunakan 6 pin analog, dengan pin 14-16 terhubung ke baris grid kawat, dan pin 17-19 terhubung ke kolom.

Langkah 5: Panel Sentuh - Cara Kerja

Panel Sentuh - Cara Kerjanya
Panel Sentuh - Cara Kerjanya
Panel Sentuh - Cara Kerjanya
Panel Sentuh - Cara Kerjanya

Sama seperti kita menggunakan multiplexer palang untuk mengatur matriks LED dengan pin minimal, kita dapat menggunakan multiplexer palang serupa untuk mengatur array sensor sentuh, yang kemudian dapat kita gunakan untuk mengaktifkan LED. Konsep touch pad ini sederhana. Ini pada dasarnya adalah kisi-kisi kawat, dengan tiga kabel telanjang berjalan di baris, dan tiga kabel telanjang berjalan di kolom di atas baris. Di setiap titik persimpangan ada kotak kecil isolasi yang mencegah kedua kabel bersentuhan. Jari yang menyentuh persimpangan akan membuat kontak dengan kedua kabel, menghasilkan resistansi yang besar, tetapi terbatas antara kedua kabel. Arus kecil, tetapi dapat dideteksi, arus dapat dibuat mengalir dari satu kawat ke kawat berikutnya, melalui jari. Untuk menentukan persimpangan mana yang ditekan, metode berikut digunakan:Langkah 1: Atur semua baris kolom ke OUTPUT LOW. Langkah 2: Atur baris baris ke INPUT, dengan pullup internal diaktifkan. Langkah 3: Ambil pembacaan analog pada setiap baris baris hingga nilainya turun di bawah ambang batas yang diberikan. Ini memberitahu Anda di baris mana persimpangan yang ditekan berada. Langkah 4: Ulangi Langkah 1-3, tapi sekarang dengan kolom sebagai input dan baris sebagai output. Ini memberi tahu Anda kolom mana persimpangan yang ditekan. Untuk meminimalkan efek kebisingan, sejumlah bacaan diambil dan kemudian dirata-rata. Hasil rata-rata kemudian dibandingkan dengan ambang batas. Karena metode ini hanya memeriksa ambang batas, metode ini tidak cocok untuk mendeteksi penekanan simultan. Namun, karena tic tac toe berlangsung secara bergantian, membaca sekali tekan sudah cukup. Terlampir adalah sketsa yang menggambarkan cara kerja touchpad. Seperti matriks LED, bit digunakan untuk menunjukkan persimpangan mana yang ditekan.

Langkah 6: Menyatukan Semuanya

Menyatukan Semuanya
Menyatukan Semuanya

Sekarang setelah semua komponen individu selesai, saatnya untuk menyatukan semuanya. Letakkan kisi-kisi kawat pada matriks LED. Anda mungkin perlu menyusun ulang penomoran pin dalam kode matriks LED untuk menyinkronkannya dengan sensor grid kawat. Amankan kisi-kisi kawat di tempatnya dengan pengencang atau perekat pilihan Anda, dan tempelkan pada papan permainan yang bagus. Tambahkan sakelar antara pin 12 dan ground Arduino. Sakelar ini untuk beralih antara 2 mode pemutar, dan 1 mode pemutar (vs mikrokontroler).

Langkah 7: Pemrograman Tic Tac Toe

Terlampir adalah kode untuk permainannya. Pertama-tama mari kita urai permainan tic tac toe ke dalam berbagai langkahnya, dalam mode dua pemain: Langkah 1: Pemain A mengambil sel yang tidak terisi dengan menyentuh persimpangan. Langkah 2: LED untuk sel itu menyala dengan warna A. Langkah 3: Periksa apakah Pemain A telah menang. Langkah 4: Pemain B memilih sel yang tidak terisi. Langkah 5: LED untuk sel itu menyala dengan warna B. Langkah 6: Periksa untuk melihat apakah Pemain B telah menang. Langkah 7: Ulangi 1-6 sampai ada kondisi menang, atau jika semua sel terisi. Membaca sel:Program loop antara membaca grid dan menampilkan matriks LED. Selama sensor grid tidak mendaftarkan nilai bukan nol, loop ini akan terus berlanjut. Saat persimpangan ditekan, variabel Ditekan menyimpan posisi sel yang ditekan. Memeriksa apakah sel tidak terisi: Ketika pembacaan posisi diperoleh (variabel Ditekan), dibandingkan dengan status sel saat ini (disimpan dalam variabel GridOnOff) menggunakan penambahan bitwise. Jika sel yang Ditekan tidak terisi, lanjutkan untuk menyalakan LED, jika tidak kembali membaca sel. Mengalihkan warna: Variabel boolean, Putar, digunakan untuk merekam giliran siapa. Warna LED yang dipilih saat sel diambil ditentukan oleh variabel ini, yang bergantian setiap kali sel dipilih. Memeriksa kondisi menang: Hanya ada 8 kemungkinan kondisi menang, dan ini disimpan sebagai variabel kata dalam larik (winArray). Dua tambahan bitwise digunakan untuk membandingkan posisi sel yang diisi pemain dengan kondisi menang. Jika ada pertandingan, maka program menampilkan rutinitas menang, setelah itu memulai permainan baru. Memeriksa kondisi seri: Ketika sembilan putaran telah dicatat dan masih tidak ada kondisi menang, maka permainan adalah seri. LED kemudian padam dan permainan baru dimulai. Beralih ke mode satu pemain: Jika sakelar dalam posisi hidup, program masuk ke mode satu pemain, dengan pemain manusia yang memulai terlebih dahulu. Di akhir giliran pemain manusia, program hanya memilih sel acak. Jelas, ini bukan strategi paling cerdas!

Langkah 8: Komentar dan Perbaikan Lebih Lanjut

Berikut video yang menunjukkan mode satu pemain, dengan program memainkan gerakan yang benar-benar acak: Program yang ditampilkan di sini hanyalah versi minimal dan tanpa tulang. Banyak hal lain yang dapat dilakukan dengan ini:1) Menyalakan LED tiga kali sekaligusKode saat ini hanya menampilkan satu LED sekaligus. Namun, dengan pengkabelan yang ditunjukkan di sini, dimungkinkan untuk menyalakan semua LED yang terhubung ke satu jalur katoda pada saat yang bersamaan. Jadi, alih-alih bersepeda melalui kesembilan posisi, yang perlu Anda lakukan hanyalah memutar melalui tiga jalur katoda.2) Gunakan interupsi untuk menampilkan LEDTergantung pada rutinitas tampilan LED dan jumlah pemrosesan, LED mungkin menunjukkan beberapa tingkat kerlip. Dengan menggunakan interupsi, waktu LED dapat dikontrol dengan tepat dan akan menghasilkan tampilan yang lebih halus.3) Pemutar komputer yang lebih cerdasKode saat ini hanya membutuhkan beberapa kb, menyisakan sedikit lebih banyak untuk implementasi tic tac komputer yang lebih cerdas toe player. Semoga Anda menikmati membaca instruksi ini sama seperti saya bersenang-senang mengerjakannya!

Direkomendasikan: