Isi kandungan:

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, September
Anonim
Arduino dan Touchpad Tic Tac Toe
Arduino dan Touchpad Tic Tac Toe

Atau, latihan multiplexing input dan output, dan bekerja dengan bit. Dan penyerahan untuk pertandingan Arduino.

Ini adalah pelaksanaan permainan tic tac toe menggunakan array 3x3 LED dwwarna untuk paparan, pad sentuh resistif sederhana, dan Arduino untuk mengikat semuanya. Untuk melihat bagaimana ia berfungsi, lihat video: Apa yang diperlukan oleh projek ini: Bahagian dan bahan habis pakai Satu papan perf (atau papan jalur) Sembilan LED dua warna, katod biasa Sembilan perintang yang sama, dalam julat 100-220 ohm Enam perintang yang sama, di Julat 10kohm - 500kohm Satu tiang tunggal, suis lemparan berganda Sekumpulan pin header Sekumpulan dawai elektrik Satu kepingan persegi kecil akrilik lutsinar, tebal 1 mm, 8 cm di sisi Pita melekit yang jelas Pancaran panas (pilihan) Semua di atas adalah barang yang cukup biasa, jumlah kosnya tidak boleh melebihi USD $ 20. Penyediaan Arduino One Arduino (Arduino Duemilanove, Arduino IDE, komputer, kabel USB) Alat elektrik biasa (multimeter, solder solder gun, wire snips, wire cutter) Semua yang berkaitan dengan Arduino mungkin dijumpai di https://www.arduino.cc. Terus dengan binaan!

Langkah 1: Memasang Matriks LED

Memasang Matriks LED
Memasang Matriks LED
Memasang Matriks LED
Memasang Matriks LED

Untuk lampu LED, kedua-dua plag mesti disambungkan. Sekiranya kita mendedikasikan sepasang pin untuk setiap 18 LED (9 merah, 9 hijau), kita akan cepat kehabisan pin di Arduino. Walau bagaimanapun, dengan multiplexing, kita dapat mengatasi semua LED hanya dengan 9 pin! Untuk melakukan ini, LED disambung dengan cara bar silang, seperti yang ditunjukkan pada gambar pertama. LED dikelompokkan dalam lajur tiga, dan katod mereka dikelompokkan dalam baris enam. Dengan menetapkan garis anod tertentu tinggi, dan garis katod tertentu rendah, dan mempunyai impedans tinggi pada semua garis anod dan katod yang lain, kita boleh pilih LED mana yang kita mahu menyala, kerana hanya ada satu jalan yang mungkin diambil arus. Sebagai contoh, pada gambar kedua, menetapkan tinggi anod hijau 1 baris, dan garis katod 1 rendah, LED hijau kiri bawah menyala. Laluan semasa dalam kes ini ditunjukkan dengan warna biru. Tetapi bagaimana jika anda ingin menyalakan lebih dari satu LED pada garis yang berbeza? Kami akan menggunakan kegigihan penglihatan untuk mencapainya. Dengan memilih pasangan garis LED dengan sangat cepat, ia memberi ilusi bahawa semua LED yang dipilih menyala pada masa yang sama.

Langkah 2: Susun atur Matriks LED

Susun atur Matrik LED
Susun atur Matrik LED
Susun atur Matrik LED
Susun atur Matrik LED

Gambarajah litar di bawah menunjukkan bagaimana LED disambungkan secara fizikal (G1-G9: LED hijau, R1-R9: LED merah). Gambar rajah ini adalah untuk LED merah dan hijau tunggal, jika anda menggunakan LED katod biasa berwarna merah / hijau, hanya ada satu kaki katod setiap pasangan merah / hijau yang perlu anda sambungkan. Garis anoda merah dan hijau masuk ke pin PWM Arduino (pin 3, 5, 6, 9, 10, 11 di Duemilanove), supaya kita dapat memberi kesan seperti memudar di kemudian hari. Garis katod masuk ke pin 4, 7 dan 8. Setiap garis katod dan anod mempunyai perintang 100 ohm untuk perlindungan.

Langkah 3: Menangani Matrik LED

Untuk kod tic tac toe, kita perlu dapat menyimpan maklumat berikut mengenai LED: - sama ada LED menyala atau tidak - jika menyala, sama ada merah atau hijau Salah satu cara untuk melakukan ini adalah dengan menyimpan keadaan dalam susunan 9 sel, menggunakan tiga digit untuk mewakili keadaan (0 = mati, 1 = menyala merah, 2 = menyala hijau). Setiap kali kita perlu memeriksa keadaan LED, misalnya, untuk memeriksa apakah ada keadaan menang, kita perlu menelusuri array. Ini adalah kaedah yang boleh dilaksanakan, tetapi agak kikuk. Kaedah yang lebih lancar ialah menggunakan dua kumpulan sembilan bit. Kumpulan sembilan bit pertama menyimpan status LED mati, dan kumpulan kedua sembilan bit menyimpan warnanya. Kemudian, memanipulasi keadaan LED menjadi masalah aritmetik dan peralihan. Inilah contoh yang berjaya. Katakan kita melukis grid tic tac toe kita secara grafik, dan pertama kali menggunakan 1s dan 0s untuk mewakili status on-off (1 dihidupkan, 0 mati): 000 000 = matriks dengan LED kiri bawah menyala 100 100 010 = matriks dengan pepenjuru LED menyala 001 Sekiranya kita menghitung sel dari kiri bawah, kita dapat menulis representasi di atas sebagai satu siri bit. Dalam kes pertama, itu adalah 100000000, dan dalam kes kedua, itu adalah 001010100. Sekiranya kita menganggapnya sebagai representasi binari, maka setiap siri bit dapat dikondensasikan menjadi satu nombor (256 dalam kes pertama, 84 dalam kes kedua). Oleh itu, daripada menggunakan array untuk menyimpan keadaan matriks, kita hanya boleh menggunakan satu nombor! Begitu juga, kita dapat mewakili warna LED dengan cara yang sama (1 berwarna merah, 0 berwarna hijau). Mari kita anggap terlebih dahulu semua LED menyala (jadi status on-off ditunjukkan oleh 511). Matriks di bawah ini akan mewakili keadaan warna LED: 010 hijau, merah, hijau 101 merah, hijau, merah 010 hijau, merah, hijau Sekarang, semasa memaparkan matriks LED, kita hanya perlu mengitar setiap bit, pertama dalam keadaan mati, dan kemudian dalam keadaan warna. Sebagai contoh, katakan keadaan on-off kami adalah 100100100, dan keadaan warna adalah 010101010. Inilah algoritma kami untuk menyalakan matriks LED: Langkah 1. Lakukan penambahan sedikit demi sedikit keadaan on-off dengan perduaan 1 (iaitu bit bertopeng). Langkah 2. Sekiranya benar, LED menyala. Lakukan sekarang sedikit penambahan keadaan warna dengan perduaan 1. Langkah 3. Sekiranya benar, nyalakan LED merah. Sekiranya salah, nyalakan LED hijau. Langkah 4. Geser kedua-dua keadaan on-off dan warna, satu bit ke kanan (iaitu bit shift). Langkah 5. Ulangi Langkah 1 - 4 sehingga semua sembilan bit telah dibaca. Perhatikan bahawa kita mengisi matriks ke belakang - kita mulakan dengan sel 9, kemudian terus turun ke sel 1. Juga, keadaan on-off dan warna disimpan sebagai jenis bilangan bulat (kata) yang tidak ditandatangani dan bukan jenis bilangan bulat yang ditandatangani. Itu kerana dalam sedikit perubahan, jika kita tidak berhati-hati, kita mungkin secara tidak sengaja mengubah tanda pemboleh ubah. Terlampir adalah kod untuk menyalakan matriks LED.

Langkah 4: Membina Pad Sentuh

Membina Pad Sentuh
Membina Pad Sentuh
Membina Pad Sentuh
Membina Pad Sentuh
Membina Pad Sentuh
Membina Pad Sentuh
Membina Pad Sentuh
Membina Pad Sentuh

Pad sentuh dibina dari kepingan akrilik nipis, cukup besar untuk dilapisi di atas matriks LED. Kemudian, pita kabel baris dan lajur ke lembaran akrilik, menggunakan pita yang jelas. Pita yang jelas juga digunakan sebagai penebat penebat antara wayar, di persimpangan. Pastikan menggunakan alat yang bersih, untuk mengelakkan minyak jari masuk ke bahagian pita yang melekit. Noda cap jari tidak hanya kelihatan jelek, tetapi membuat pita kurang melekit. Potong salah satu hujung setiap garisan, dan pasangkan ujung yang lain ke wayar yang lebih panjang. Memateri perintang sejajar dengan wayar, sebelum menyolder pada penyambung. Perintang yang digunakan di sini adalah 674k, tetapi nilai antara 10k dan 1M mestilah baik. Sambungan ke Arduino dibuat menggunakan 6 pin analog, dengan pin 14-16 disambungkan ke baris grid wayar, dan pin 17-19 disambungkan ke lajur.

Langkah 5: Pad Sentuh - Bagaimana Ia Berfungsi

Pad Sentuh - Bagaimana Ia Berfungsi
Pad Sentuh - Bagaimana Ia Berfungsi
Pad Sentuh - Bagaimana Ia Berfungsi
Pad Sentuh - Bagaimana Ia Berfungsi

Sama seperti kita menggunakan multiplexer bar palang untuk menyiapkan matriks LED dengan pin minimum, kita dapat menggunakan multiplexer palang serupa untuk mengatur susunan sensor sentuh, yang kemudian dapat kita gunakan untuk mengaktifkan LED. Konsep untuk pad sentuh ini mudah. Pada dasarnya ini adalah grid kawat, dengan tiga wayar telanjang berjalan dalam baris, dan tiga wayar telanjang berjalan di lajur di atas baris. Di setiap titik persimpangan terdapat petak kecil penebat yang menghalang kedua-dua wayar daripada menyentuh. Jari yang menyentuh persimpangan akan bersentuhan dengan kedua-dua wayar, sehingga menghasilkan rintangan yang besar tetapi terbatas antara kedua-dua wayar. Oleh itu, arus yang kecil, tetapi dapat dikesan, dapat dibuat mengalir dari satu wayar ke wayar yang lain, melalui jari. Untuk menentukan persimpangan yang ditekan, kaedah berikut digunakan: Langkah 1: Tetapkan semua garis lajur ke OUTPUT LOW. Langkah 2: Tetapkan garis baris ke INPUT, dengan penarikan dalaman diaktifkan. Langkah 3: Ambil bacaan analog pada setiap baris baris sehingga nilainya jatuh di bawah ambang yang ditentukan. Ini memberitahu anda di baris mana persimpangan yang ditekan. Langkah 4: Ulangi Langkah 1-3, tetapi sekarang dengan lajur sebagai input dan baris sebagai output. Ini memberitahu anda ruangan mana persimpangan yang ditekan. Untuk mengurangkan kesan bunyi bising, sejumlah bacaan diambil dan kemudian rata-rata. Hasil rata-rata kemudian dibandingkan dengan ambang. Oleh kerana kaedah ini hanya memeriksa ambang, ia tidak sesuai untuk mengesan tekanan serentak. Walau bagaimanapun, kerana tic tac toe berjalan secara bergantian, membaca satu tekan sahaja sudah mencukupi. Dilampirkan adalah lakaran yang menggambarkan bagaimana pad sentuh berfungsi. Seperti pada matriks LED, bit digunakan untuk mewakili persimpangan yang ditekan.

Langkah 6: Menggabungkan Semuanya

Menggabungkan Semuanya
Menggabungkan Semuanya

Sekarang setelah semua komponen selesai, sudah tiba masanya untuk menyatukannya. Overlay grid wayar pada matriks LED. Anda mungkin perlu menyusun semula penomboran pin dalam kod matriks LED untuk menyegerakkannya dengan sensor grid wayar. Pasang kawat wayar di tempatnya dengan pengancing atau pelekat pilihan anda, dan pasangkan papan permainan yang bagus. Tambahkan suis antara pin 12 dan tanah Arduino. Suis ini adalah untuk beralih antara mod 2 pemain, dan mod 1 pemain (berbanding mikrokontroler).

Langkah 7: Pengaturcaraan Tic Tac Toe

Terlampir adalah kod untuk permainan. Mari pertama memecah permainan tic tac toe ke dalam pelbagai langkahnya, dalam mod dua pemain: Langkah 1: Pemain A memilih sel yang tidak diisi dengan menyentuh persimpangan. Langkah 2: LED untuk sel itu menyala dengan warna A. Langkah 3: Periksa untuk melihat apakah Pemain A telah menang. Langkah 4: Pemain B memilih sel yang tidak diisi. Langkah 5: LED untuk sel itu menyala dengan warna B. Langkah 6: Periksa untuk mengetahui apakah Pemain B telah menang.. Selagi sensor grid tidak mendaftarkan nilai bukan sifar, gelung ini akan berterusan. Apabila persimpangan ditekan, pemboleh ubah Ditekan menyimpan kedudukan sel ditekan. Memeriksa apakah sel tidak diisi: Apabila pembacaan kedudukan diperoleh (pemboleh ubah Ditekan), ia dibandingkan dengan status sel semasa (disimpan dalam pemboleh ubah GridOnOff) menggunakan penambahan sedikit demi sedikit. Sekiranya sel Ditekan tidak diisi, kemudian teruskan untuk menyalakan LED, jika tidak, kembali membaca sel. Mengubah warna: Pemboleh ubah boolean, Turn, digunakan untuk merakam gilirannya. Warna LED yang dipilih semasa sel dipilih ditentukan oleh pemboleh ubah ini, yang bergantian setiap kali sel dipilih. Memeriksa keadaan menang: Hanya ada 8 kemungkinan keadaan menang, dan ini disimpan sebagai pemboleh ubah kata dalam array (winArray). Dua penambahan bitwise digunakan untuk membandingkan kedudukan sel pemain yang dipenuhi dengan keadaan menang. Sekiranya ada perlawanan, maka program akan menampilkan rutin kemenangan, setelah itu ia memulai permainan baru. Memeriksa syarat seri: Apabila sembilan giliran telah direkodkan dan masih belum ada syarat menang, maka permainan itu seri. LED kemudian pudar dan permainan baru dimulakan. Beralih ke mod satu pemain: Jika suis berada dalam kedudukan hidup, program akan masuk ke mod satu pemain, dengan pemain manusia bermula pertama. Pada akhir giliran pemain manusia, program ini hanya memilih sel rawak. Jelas, ini bukan strategi paling pintar!

Langkah 8: Ucapan dan Penambahbaikan Lanjut

Berikut adalah video yang menunjukkan mod satu pemain, dengan program yang dimainkan secara rawak: Program yang ditunjukkan di sini hanyalah versi minimal, tulang kosong. Banyak perkara lain dapat dilakukan dengan ini: 1) Menyalakan LED tiga per satuKod semasa memaparkan hanya satu LED sekaligus. Walau bagaimanapun, dengan pendawaian yang ditunjukkan di sini, mungkin untuk menyalakan semua LED yang disambungkan ke satu garis katod pada masa yang sama. Oleh itu, bukannya berpusing melalui kesembilan kedudukan, yang perlu anda lakukan ialah menelusuri ketiga garis katod. 2) Gunakan selang untuk memaparkan LED Bergantung pada rutin paparan LED dan jumlah pemprosesan, LED mungkin menunjukkan tahap kelipan. Dengan menggunakan gangguan, masa LED dapat dikendalikan dengan tepat dan akan menyebabkan paparan lebih lancar.3) Pemain komputer yang lebih pintarKod arus hanya mengambil beberapa kb, meninggalkan sedikit lebih banyak untuk pelaksanaan komputer yang lebih pintar pemain jari kaki. Semoga anda seronok membaca arahan ini kerana saya seronok menggunakannya!

Disyorkan: