Daftar Isi:

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

Video: Arduino VGA Console Dengan Lima Game: 4 Langkah

Video: Arduino VGA Console Dengan Lima Game: 4 Langkah
Video: Arduino VGA game console - 8 games 2024, Juli
Anonim
Image
Image
Konsol VGA Arduino Dengan Lima Game
Konsol VGA Arduino Dengan Lima Game
Konsol VGA Arduino Dengan Lima Game
Konsol VGA Arduino Dengan Lima Game

Dalam Instructables saya sebelumnya, saya telah mereproduksi versi sederhana dari beberapa game arcade klasik paling populer, melalui Arduino telanjang dan beberapa komponen lainnya. Kemudian saya menggabungkan lima dari mereka bersama-sama dalam satu sketsa. Di sini saya akan menunjukkan bagaimana Anda dapat membuat konsol sederhana yang dapat memainkan Pong, Breakout, Bomber, Tetris, dan mainan menggambar yang terinspirasi dari Etch-a-Sketch. Konsol ini dapat digunakan juga untuk memainkan Snake, dan dua game lainnya yang ditulis oleh penulis lain: Bit Ninja oleh Sandro Maffiodo alias "Smaffer" dan Stacker oleh Nikita Kurylev.

Fitur utamanya adalah pembangkitan sinyal VGA, berkat library VGAx, sehingga konsol memerlukan monitor VGA. Tujuan saya, seperti biasa, adalah untuk menghindari "komponen khusus" apa pun untuk membuatnya, Anda tidak memerlukan IC atau perisai pendukung apa pun! Satu-satunya komponen adalah dua potensiometer, lima tombol, beberapa resistor, dan konektor DSUB15 (VGA). Speaker piezo adalah opsional. Anda dapat melihat bagaimana permainan ini terlihat pada gambar di halaman ini.

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

Langkah 1: Cara Membuat Konsol VGA Arduino Anda Sendiri

Cara Membuat Konsol VGA Arduino Anda Sendiri
Cara Membuat Konsol VGA Arduino Anda Sendiri
Cara Membuat Konsol VGA Arduino Anda Sendiri
Cara Membuat Konsol VGA Arduino Anda Sendiri

Pertama-tama unduh kode ArduinoVGAgame.ino dan/atau Snake.ino di bagian bawah halaman ini dan salin ke PC Anda di direktori dengan nama yang sama. Unduh pustaka VGAx dari tautan ini di GitHub. Cara termudah adalah menyalinnya di subfolder perangkat lunak Arduino bernama "perpustakaan", untuk segera dikenali.

PENTING: library ini berfungsi untuk Arduno IDE 1.6.4 tetapi tidak sepenuhnya kompatibel dengan versi yang lebih lama atau yang lebih baru.

Unggah kode di papan Arduino Anda (saya menguji Uno dan Nano). Peringatan untuk memori yang tersedia rendah adalah normal. Jika Anda tidak memiliki kesalahan lain, semuanya baik-baik saja dan Anda dapat segera mulai membangun konsol Anda sendiri.

Untuk ini, Anda perlu:

  • sebuah Arduino Uno Rev. 3 atau Arduino Nano 3.x (ATmega328)
  • Konektor DSUB15, yaitu konektor perempuan VGA atau kabel VGA yang akan dipotong.
  • resistor: 2 x 68 Ohm dan 2 x 470 Ohm dan 5 x 1 hingga 2 kOhm
  • dua potensiometer linier 10 kOhm (nilai serupa juga bagus)
  • lima tombol
  • sepotong kabel
  • satu atau dua kotak bagus untuk meletakkan semua komponen.

Fakultatif:

  • papan tempat memotong roti atau papan strip
  • pembicara piezo

Skema dilaporkan di bagian atas langkah ini, bersama dengan contoh "konsol" yang sudah jadi.

skema menunjukkan bagaimana menghubungkan tombol dan potensiometer. Lebih khusus lagi, Anda perlu menghubungkan lima tombol ke pin 5, 10, 11, 12 dan 13 masing-masing. Tindakan yang dilakukan oleh setiap tombol dijelaskan di tabel kanan atas dalam skema. Di sebelah kiri ditunjukkan cara menghubungkan potensiometer (Anda memerlukan dua potensiometer ke pin A1 dan A2). Speaker harus terhubung ke pin analog A0.

Saya menempatkan papan Arduino dengan konektor VGA di kotak kayu, yang juga menampung potensiometer pemain pertama dan empat tombol, sedangkan potensiometer pemain kedua dan tombol start-nya berada di kotak yang terpisah dan lebih kecil.

Jika Anda menyukai mainan ini dan Anda memutuskan untuk mereproduksinya, saya menghargai jika Anda menulis komentar atau mengirim gambar di bagian komentar di bawah.

Langkah 2: Game Dari Penulis Lain

Sandro Maffiodo baru-baru ini merilis game BitNinja. Anda dapat menemukan informasi lebih lanjut di sini dan mengunduh kodenya di sini.

Untuk menggunakan konsol saya, Anda hanya perlu memetakan kembali tombol dalam kodenya sebagai berikut:

#define BTN_UP 11 (bukan 13)

#define BTN_LEFT 10 (bukan 12)

#define BTN_RIGHT 12 (bukan 11)

Stacker, dari Nikita Kurylev, tersedia di sini. Informasi lebih lanjut di sini.

Sekali lagi, Anda harus memetakan kembali satu tombol, di bagian kode yang berbeda: cukup ganti digitalRead(2) dengan digitalRead(13)

Langkah 3: Lampiran 1: Detail Lebih Lanjut Tentang Cara Membuat Kontroler

Lampiran 1: Detail Lebih Lanjut Tentang Cara Membuat Kontroler
Lampiran 1: Detail Lebih Lanjut Tentang Cara Membuat Kontroler
Lampiran 1: Detail Lebih Lanjut Tentang Cara Membuat Kontroler
Lampiran 1: Detail Lebih Lanjut Tentang Cara Membuat Kontroler
Lampiran 1: Detail Lebih Lanjut Tentang Cara Membuat Kontroler
Lampiran 1: Detail Lebih Lanjut Tentang Cara Membuat Kontroler
Lampiran 1: Detail Lebih Lanjut Tentang Cara Membuat Kontroler
Lampiran 1: Detail Lebih Lanjut Tentang Cara Membuat Kontroler

Anda dapat mewujudkan pengontrol dengan berbagai cara, tergantung pada bahan yang tersedia dan selera Anda.

Saya suka mewujudkannya dengan kotak kayu (lihat gambar di halaman ini). Kotak utama untuk Arduino, konektor VGA dan tombol pemutar pertama dan potensiometer; yang kedua (lebih kecil) hanya untuk tombol dan roda pemain kedua (diperlukan untuk Pong dan mainan gambar). Kemungkinan lain adalah memasukkan semuanya ke dalam satu kotak yang lebih besar.

Pertama saya sarankan untuk menghubungkan port VGA. Pada gambar pertama dan kedua Anda dapat melihat beberapa detail: perhatikan dua resistor 470 Ohm untuk Merah dan Hijau masing-masing terhubung ke pin 6 dan 7, dan dua 68 Ohm ke pin 3 dan 9 untuk sinyal sinkronisasi horizontal dan vertikal.

Anda dapat memilih kombinasi warna yang berbeda tergantung pada pin yang Anda sambungkan pada konektor VGA DSUB15, pin 1, 2 dan 3 masing-masing mewakili Merah, Hijau, Biru (RGB). Saya menghubungkan pin 1 dan 2, sehingga saya memiliki kombinasi warna berikut: (0, 0) = hitam; (1, 0) = merah; (0, 1) = hijau; (1, 1) = kuning.

Untuk semua kemungkinan yang berbeda, saya sarankan untuk membaca detailnya di halaman tempat Anda mengunduh pustaka VGAx.

Segera setelah konektor VGA siap, Anda dapat menyiapkan semua kabel lainnya untuk tombol, roda, dan speaker (lihat gambar 2).

Sekarang hanya menempatkan semuanya bersama-sama: ingat bahwa setiap pin tombol harus terhubung ke ground melalui resistor 1 atau 2 kOhm, jika tidak ketika tombol terbuka status pin mungkin tidak terdefinisi. Ini berarti bahwa jika pin dibiarkan terputus, Anda dapat memiliki tegangan acak (statis) di atasnya yang dapat mengaktifkannya. Lihat untuk lebih detail skema pada langkah kedua dari instruksi ini.

Langkah terakhir adalah memperbaiki semuanya di tempatnya. Saya menggunakan pistol lem panas, tetapi Anda dapat menggunakan metode pilihan Anda.

Langkah 4: Lampiran 2: Beberapa Pertimbangan Tentang Batas Memori

Sungguh menakjubkan bahwa Arduino sederhana mampu menghasilkan sinyal VGA dan semua game ini bersama-sama. Hambatan sebenarnya adalah kurangnya SRAM. Mikrokontroler AVR hanya memiliki 2048 byte yang tersedia untuk menyimpan dan memanipulasi variabel, dan pustaka VGAx menyimpan variabel layar dalam framebuffer 120x60 piksel di mana setiap piksel membutuhkan 2 bit (4 warna), dengan total 1800 byte. Ini berarti hanya tersisa 248 byte untuk variabel sketsa. Selain itu, menurut pengalaman saya, seseorang harus membiarkan setidaknya 100 byte gratis untuk menghindari ketidakstabilan. Menggunakan memori dinamis di atas 1950 byte, mikrokontroler mulai menunjukkan perilaku aneh dan tidak terduga.

Ini berarti bahwa semua variabel harus dibagi di antara game yang berbeda, dan ini membuat kode tidak dapat dibaca dan sulit untuk di-debug. Bukan hanya masalah "menambahkan permainan baru" ke sketsa sebelumnya, tetapi semua kode harus dimodifikasi dan dioptimalkan secara mendalam.

Selain itu, saya harus menggunakan format variabel seminimal mungkin: misalnya, untuk semua koordinat saya harus menggunakan "byte" daripada "int" atau, dalam kasus lain, saya harus memilih "int" daripada "float".

Akhirnya, pengakuan saya sampai ke Sandro Maffiodo alias Smaffer, pencipta perpustakaan VGAx dan game BitNinja yang luar biasa. Tanpa perpustakaan ini, proyek ini tidak mungkin terwujud.

Terima kasih juga kepada Nikita Kurylev untuk permainan Stacker yang sederhana namun lucu.

Direkomendasikan: