Isi kandungan:

Arduino VGA Console Dengan Lima Permainan: 4 Langkah
Arduino VGA Console Dengan Lima Permainan: 4 Langkah

Video: Arduino VGA Console Dengan Lima Permainan: 4 Langkah

Video: Arduino VGA Console Dengan Lima Permainan: 4 Langkah
Video: Arduino VGA game console - 8 games 2024, Julai
Anonim
Image
Image
Arduino VGA Console Dengan Lima Permainan
Arduino VGA Console Dengan Lima Permainan
Arduino VGA Console Dengan Lima Permainan
Arduino VGA Console Dengan Lima Permainan

Dalam Instructables saya sebelumnya, saya telah memperbanyak versi ringkas permainan arcade klasik yang paling popular, dengan menggunakan Arduino yang kosong dan beberapa komponen lain. Kemudian saya menyertai lima daripadanya dalam satu lakaran. Di sini saya akan menunjukkan bagaimana anda boleh membina konsol sederhana yang boleh bermain Pong, Breakout, Bomber, Tetris dan mainan lukisan yang diilhami oleh Etch-a-Sketch. Konsol ini boleh digunakan juga untuk bermain Snake, dan dua lagi permainan yang ditulis oleh pengarang lain: Bit Ninja oleh Sandro Maffiodo aka "Smaffer" dan Stacker oleh Nikita Kurylev.

Ciri utama adalah penghasilan isyarat VGA, berkat perpustakaan VGAx, oleh itu konsol memerlukan monitor VGA. Tujuan saya, seperti biasa, adalah untuk mengelakkan "komponen khas" untuk membinanya, anda tidak memerlukan IC atau perisai sokongan! Satu-satunya komponen adalah dua potensiometer, lima butang, beberapa perintang dan penyambung DSUB15 (VGA). Pembesar suara piezo adalah pilihan. Anda dapat melihat bagaimana permainan ini kelihatan dalam gambar di halaman ini.

Perpustakaan VGAx memungkinkan untuk menggunakan empat warna dengan resolusi 120 x 60 piksel, tidak banyak tetapi cukup untuk konsol permainan retro ini. Grafiknya mentah tetapi, berkat penggunaan potensiometer, permainan berjalan lancar. Kesan bunyi sederhana juga tersedia.

Langkah 1: Bagaimana Membina Konsol VGA Arduino Anda Sendiri

Cara Membina Konsol VGA Arduino Anda Sendiri
Cara Membina Konsol VGA Arduino Anda Sendiri
Cara Membina Konsol VGA Arduino Anda Sendiri
Cara Membina Konsol VGA Arduino Anda Sendiri

Muat turun dahulu kod ArduinoVGAgame.ino dan / atau Snake.ino di bahagian bawah halaman ini dan salin di PC anda dalam direktori dengan nama yang sama. Muat turun perpustakaan VGAx dari pautan ini di GitHub. Cara termudah adalah menyalinnya dalam subfolder perisian Arduino yang bernama "perpustakaan", agar dapat dikenali dengan segera.

PENTING: perpustakaan ini berfungsi untuk Arduno IDE 1.6.4 tetapi ia tidak serasi sepenuhnya dengan versi yang lebih tua atau yang lebih baru.

Muat naik kod di papan Arduino anda (saya menguji Uno dan Nano). Amaran untuk memori yang tersedia rendah adalah perkara biasa. Sekiranya anda tidak mempunyai kesalahan lain semuanya baik-baik saja dan anda boleh mula membina konsol anda sendiri.

Untuk ini, anda memerlukan:

  • Arduino Uno Rev. 3 atau Arduino Nano 3.x (ATmega328)
  • Penyambung DSUB15, iaitu penyambung wanita VGA atau kabel VGA yang akan dipotong.
  • perintang: 2 x 68 Ohm dan 2 x 470 Ohm dan 5 x 1 hingga 2 kOhm
  • dua potensiometer linear 10 kOhm (nilai serupa juga baik)
  • lima butang
  • sebilangan kabel
  • satu atau dua kotak yang bagus untuk meletakkan semua komponen.

Fakultatif:

  • papan roti atau papan jalur
  • pembesar suara piezo

Skema dilaporkan di bahagian atas langkah ini, bersama dengan contoh "konsol" yang sudah siap.

skema menunjukkan cara menyambungkan butang dan potensiometer. Lebih khusus lagi, anda perlu menyambungkan lima butang ke pin masing-masing 5, 10, 11, 12 dan 13. Tindakan yang dilakukan oleh setiap butang dijelaskan dalam jadual kanan atas dalam skema. Di sebelah kiri ditunjukkan cara menyambungkan potensiometer (anda memerlukan dua potensiometer ke pin A1 dan A2). Pembesar suara mesti disambungkan ke pin analog A0.

Saya meletakkan papan Arduino dengan penyambung VGA di dalam kotak kayu, yang memegang juga potensiometer pemain pertama dan empat butang, sementara potensiometer pemain kedua dan butang permulaannya berada dalam kotak yang terpisah dan lebih kecil.

Sekiranya anda menyukai mainan ini dan anda memutuskan untuk membuatnya semula, saya sangat menghargai jika anda menulis komen atau menghantar gambar di bahagian komen di bawah.

Langkah 2: Permainan Dari Pengarang Lain

Sandro Maffiodo baru-baru ini menayangkan permainan BitNinja. Youn boleh mendapatkan lebih banyak maklumat di sini dan memuat turun kodnya di sini.

Untuk menggunakan konsol saya, anda hanya perlu memetakan semula butang dalam kodnya seperti berikut:

#tentukan BTN_UP 11 (bukannya 13)

#tentukan BTN_LEFT 10 (bukannya 12)

#tentukan BTN_RIGHT 12 (bukannya 11)

Stacker, dari Nikita Kurylev, boleh didapati di sini. Maklumat lebih lanjut di sini.

Sekali lagi, anda perlu memetakan semula satu butang, di bahagian kod yang berbeza: ganti digitalRead (2) dengan digitalRead (13)

Langkah 3: Lampiran 1: Maklumat Lebih Lanjut Mengenai Cara Membangunkan Pengawal

Lampiran 1: Perincian Lebih Lanjut Mengenai Bagaimana Membangun Pengawal
Lampiran 1: Perincian Lebih Lanjut Mengenai Bagaimana Membangun Pengawal
Lampiran 1: Perincian Lebih Lanjut Mengenai Bagaimana Membangun Pengawal
Lampiran 1: Perincian Lebih Lanjut Mengenai Bagaimana Membangun Pengawal
Lampiran 1: Perincian Lebih Lanjut Mengenai Bagaimana Membangun Pengawal
Lampiran 1: Perincian Lebih Lanjut Mengenai Bagaimana Membangun Pengawal
Lampiran 1: Perincian Lebih Lanjut Mengenai Bagaimana Membangun Pengawal
Lampiran 1: Perincian Lebih Lanjut Mengenai Bagaimana Membangun Pengawal

Anda boleh menggunakan alat kawalan dengan pelbagai cara, bergantung pada bahan yang ada dan citarasa anda.

Saya suka merealisasikannya dengan kotak kayu (lihat gambar di halaman ini). Kotak utama untuk Arduino, penyambung VGA dan butang pemain pertama dan potenziometer; yang kedua (lebih kecil) hanya untuk butang dan roda pemain kedua (diperlukan untuk Pong dan mainan gambar). Kemungkinan lain adalah meletakkan semuanya dalam satu kotak yang lebih besar.

Mula-mula saya meminta untuk menyambungkan port VGA. Pada gambar pertama dan kedua anda dapat melihat beberapa perincian: perhatikan dua perintang 470 Ohm untuk Merah dan Hijau masing-masing yang disambungkan ke pin 6 dan 7, dan dua 68 Ohm ke pin 3 dan 9 untuk isyarat penyegerakan mendatar dan menegak.

Anda boleh memilih kombinasi warna yang berbeza bergantung pada pin yang anda sambungkan pada penyambung VGA DSUB15, pin 1, 2 dan 3 masing-masing mewakili Merah, Hijau, Biru (RGB). Saya menyambungkan pin 1 dan 2, jadi saya mempunyai kombinasi warna berikut: (0, 0) = hitam; (1, 0) = merah; (0, 1) = hijau; (1, 1) = kuning.

Untuk semua kemungkinan yang berbeza, saya cadangkan untuk membaca butiran di halaman di mana anda memuat turun perpustakaan VGAx.

Sebaik sahaja penyambung VGA siap, anda boleh menyiapkan semua kabel lain untuk butang, roda dan pembesar suara (lihat gambar 2).

Sekarang letakkan semuanya: ingat bahawa setiap pin butang harus disambungkan ke tanah melalui perintang 1 atau 2 kOhm, jika tidak apabila butang dibuka keadaan pin mungkin tidak ditentukan. Ini bermaksud bahawa jika pin dibiarkan terputus, anda boleh mempunyai voltan rawak (statik) di atasnya yang dapat mengaktifkannya. Lihat lebih banyak lagi skema dalam langkah kedua arahan ini.

Langkah terakhir adalah memperbaiki semuanya di tempatnya. Saya menggunakan hot-lem-gun, tetapi anda boleh menggunakan kaedah pilihan anda.

Langkah 4: Lampiran 2: Beberapa Pertimbangan Mengenai Had Memori

Sungguh mengagumkan bahawa Arduino sederhana dapat menghasilkan isyarat VGA dan semua permainan ini bersama-sama. Leher botol sebenarnya adalah kekurangan SRAM. Mikrokontroler AVR hanya memiliki 2048 bait yang tersedia untuk menyimpan dan memanipulasi pemboleh ubah, dan perpustakaan VGAx menyimpan pemboleh ubah layar dalam framebuffer 120x60 piksel di mana setiap piksel memerlukan 2 bit (4 warna), untuk total 1800 bita. Ini bermaksud bahawa hanya tinggal 248 bait untuk pemboleh ubah lakaran. Tambahan pula, berdasarkan pengalaman saya, seseorang harus meninggalkan sekurang-kurangnya 100 bait untuk mengelakkan ketidakstabilan. Dengan menggunakan memori dinamik di atas 1950 bait, pengawal mikro mula menunjukkan tingkah laku ganjil dan tidak dapat diramalkan.

Ini bermaksud bahawa semua pemboleh ubah mesti dikongsi di antara permainan yang berbeza, dan ini menjadikan kodnya agak tidak dapat dibaca dan sukar untuk di-debug. Bukan sekadar "menambah permainan baru" pada lakaran sebelumnya, tetapi semua kodnya mesti diubah dan dioptimumkan secara mendalam.

Tambahan pula, saya harus menggunakan format pemboleh ubah minimum yang mungkin: sebagai contoh, untuk semua koordinat saya harus menggunakan "bait" bukan "int" atau, dalam kes lain, saya harus lebih memilih "int" dan bukannya "mengapung".

Akhirnya, aknowledgement saya pergi ke Sandro Maffiodo aka Smaffer, pencipta perpustakaan VGAx dan permainan BitNinja yang hebat. Tanpa perpustakaan ini, projek ini tidak akan dapat dilaksanakan.

Terima kasih juga kepada Nikita Kurylev untuk permainan Stacker yang mudah tetapi lucu.

Disyorkan: