ATtiny85 Mini Arcade: Snake – Buat Konsol Game OLED Tangan
Komponen dan perlengkapan
Microchip Technology ATtiny85
×
1
Graphic OLED, 128 x 64
×
1
SparkFun microB USB Breakout
×
1
Arduino Nano R3
×
1
Alat dan mesin yang diperlukan
Pakuat solder (umum)
Printer 3D (umum)
Aplikasi dan layanan online
Autodesk Fusion 360
Arduino IDE
Tentang proyek ini
Inspirasi dan Proyek Lalu
Pada Desember 2017, saya membuat Konsol Pong Arduino Tangan yang menggunakan Arduino Nano dan layar OLED, bersama dengan dua tombol.
Ini cukup baik pada saat itu, tetapi konsol agak terlalu besar dan merepotkan. Namun akhir-akhir ini, saya telah mencoba merekreasi beberapa proyek saya sebelumnya. Kali ini, saya ingin membuat konsol yang sangat kecil yang dapat dimainkan orang untuk bermain snake.
Komponen yang Dipilih
Untuk membuat konsol kecil, saya tidak dapat menggunakan papan dev Arduino apa pun, itulah mengapa saya memilih ATtiny85.
Ia memiliki cukup I/O untuk menjalankan game, termasuk dua pin ADC dan port I2C, dan pin GPIO. Saya memilih untuk menggunakan modul joystick/switch 2-axis sederhana, karena mudah untuk dihubungkan dan hanya membutuhkan 3 pin untuk sinyal.
Terakhir, saatnya untuk memutuskan layar mana yang diperlukan. Karena layar OLED 128 x 64 DFRobot memiliki ukuran kecil tetapi resolusi yang cukup, saya memilihnya.
Menyolder Sistem
Untuk memulai, saya memasang ATtiny85 ke PCB breakout SOP-8 ke DIP-8 dan menyoldernya ke potongan perf-board kecil. Kemudian, saya menyolder dua header- satu untuk pemrograman dan yang lain untuk layar. Setelah melakukan itu, saya menghubungkan pin joystick analog ke perf-board dan menyalurkannya sesuai. Untuk langkah akhir, saya menyalurkan breakout board micro USB ke bagian sistem lainnya untuk daya.
Mendesain Enclosure
Enclosure dirancang di Fusion 360. Saya memulai dengan membuat dan menata komponen yang saya gunakan dalam pembangunan sebenarnya, lalu saya membuat enclosure di sekitarnya.
Saya ingin meniru kotak arcade dari tahun 80-an, tetapi tetap mempertahankan ukuran yang sangat kecil. Di bawah ini beberapa render enclosure:
Memrogram Game
Snake adalah game yang cukup mudah untuk diprogram. Saya menetapkan panjang snake maksimum 30 untuk menghemat RAM, berarti setelah snake memakan 29 piksel, pemain menang. Untuk melacak segmen snake, saya membuat array 2 dimensi yang menyimpan pasangan terurut untuk setiap segmen.
Setiap kali kepala pindah ke lokasi baru, posisinya sebelumnya akan runtuh ke bawah. Setiap kali segmen dikonsumsi, segmen baru akan muncul di titik acak. Pemeriksaan tabrakan dilakukan dengan mengiterasi koordinat setiap segmen dan melihat apakah koordinat kepala sama. Selain itu, mengenai dinding snake akan menyebabkan pemain kalah juga.
Memainkan Snake
Saya memulai dengan menyalakan konsol dan menunggu layar memuat makanan dan segmen pertama snake. Kemudian saya hanya mengarahkan snake dengan memindahkan joystick ke arah yang benar sambil melihatnya memakan makanan. Game ini menyenangkan untuk dimainkan dan adalah pembunuh kebosanan yang hebat dalam paket kecil.