Mempelajari cara menulis kode bisa menjadi perjalanan yang panjang. Anda tidak hanya harus menemukan sumber daya untuk membantu Anda belajar, tetapi Anda juga harus menemukan ide proyek menarik yang membuat pendidikan Anda tetap pada jalurnya.
Video game memberikan peluang besar untuk memprogram sesuatu yang dapat Anda nikmati. Dan mereka juga dapat mengajari Anda dasar-dasar yang Anda butuhkan untuk menjadi programmer yang baik. Artikel ini mengeksplorasi proyek video game Arduino genggam DIY untuk membantu Anda memulai.
Apa yang Kami Buat dan Mengapa?
Sebelum masuk ke bagian panduan artikel ini, masuk akal untuk mengeksplorasi apa yang kami buat dan mengapa kami memilihnya untuk proyek ini. Beberapa tantangan datang saat membuat game untuk perangkat seperti Arduino.
- Ruang Penyimpanan: Sebagian besar papan Arduino datang dengan sedikit RAM atau memori flash. Hal ini tidak hanya membatasi jumlah kode yang dapat dijalankan, tetapi juga menghadirkan tantangan saat bekerja dengan variabel.
- Daya Pemrosesan: Arduino yang kami gunakan memiliki CPU berdaya rendah, jadi tidak mungkin membuat aplikasi yang membutuhkan banyak sumber daya untuk itu.
- Komponen Terbatas: Arduino memiliki banyak pin yang tersedia, tetapi banyak komponen membutuhkan lebih dari satu. Ini membatasi kami dalam hal kontrol dan menampilkan output.
Dengan mempertimbangkan tantangan ini, kami memutuskan untuk membuat perangkat genggam yang menjalankan game berbasis reaksi yang sangat sederhana. Anda dapat dengan mudah membuat game lain untuk perangkat keras yang kami kerjakan, dan kami mendorong Anda untuk menjadi kreatif.
Permainannya sendiri sangat sederhana. Tiga blok muncul di layar, dua digariskan dan satu diisi, masing-masing dengan tombol fisik yang sesuai di bawah. Pemain harus menekan tombol kanan setiap putaran untuk melanjutkan permainan, dan jika mereka menekan tombol yang salah atau kehabisan waktu, permainan berakhir. Setiap penekanan tombol yang berhasil akan memberikan poin. Permainan perlahan-lahan meningkatkan kesulitannya dengan mengurangi waktu reaksi yang tersedia.
Menghubungkan Layar OLED, Arduino, dan Tombol
Menghubungkan game genggam Anda adalah langkah pertama dalam proses ini. Seperti yang Anda lihat pada diagram sirkuit di atas, Anda tidak perlu membuat banyak koneksi untuk memulai, dan Anda bahkan dapat menggunakan papan tempat memotong roti untuk proyek ini.
Kami telah menerbitkan panduan untuk membantu Anda tombol tekan kawat ke Arduino. Kita Proyek Monitor Akuarium Arduino menunjukkan cara menggunakan tampilan OLED dengan mikrokontroler seperti ini. Karena itu, kami akan fokus pada kode untuk proyek ini untuk sisa artikel ini.
Kode Game Genggam Arduino
Pemformatan yang tepat dan struktur file yang rapi sangat penting bagi programmer pemula dan veteran. Anda akan berterima kasih pada diri Anda sendiri karena telah meluangkan waktu untuk mengatur kode Anda dengan rapi jika Anda harus mengulangnya kembali.
Kode menggunakan file INO utama untuk membentuk fondasi proyek kami. Ada juga file C++ untuk mengontrol tampilan kita, file C++ untuk menjalankan kode game utama, dan file library Arduino untuk menghubungkan semuanya.
Kami akan menyelam lebih dalam ke kode ini di bawah ini, tetapi kami mendorong Anda untuk melihat melalui kode yang dikomentari di. kami Proyek Game Genggam Arduino di GitHub. Ini akan membantu Anda untuk merujuknya di samping artikel ini.
File Perpustakaan (library.h)
File perpustakaan kami memainkan peran penting, menghubungkan file proyek kami yang lain bersama-sama sehingga mereka dapat bekerja sebagai satu aplikasi. File ini berisi deklarasi untuk menyertakan library Arduino.h dan semua fungsi dalam kode game kita yang perlu bekerja di antara file kita. Tanpa ini, kode kami tidak akan berfungsi.
File INO Utama (main.ino)
Seperti banyak proyek Arduino, yang satu ini dimulai dengan template default yang disediakan oleh Arduino IDE. Template itu memberikannya mendirikan dan lingkaran fungsi yang kami gunakan untuk memanggil fungsi di file kami yang lain. File ini juga memiliki deklarasi untuk menyertakan file library.h.
Fungsi pengaturan sangat ideal untuk menginisialisasi tampilan dan tombol kami, karena hanya berjalan sekali saat Arduino direset atau dihidupkan. Untuk ini, kami memanggil fungsi disSetup() di file tampilan kami dan fungsi butSetup() di file game kami.
Fungsi loop() kami bahkan lebih sederhana daripada fungsi setup(), dengan hanya satu panggilan ke fungsi gameState() yang ditemukan di file game kami. Kami akan mengeksplorasi ini secara lebih rinci nanti di artikel.
File Kode Tampilan (display.cpp)
Kami menggunakan layar OLED SSD1306 untuk proyek ini, meskipun Anda dapat menggunakan jenis layar yang berbeda jika Anda mengedit kode yang sesuai. File ini dimulai dengan penyertaan file library, perpustakaan.h. Ini kemudian mencakup deklarasi untuk perpustakaan SPI, Wire, Adafruit_GX, dan Adafruit_SSD1306. Setelah itu, ini mendefinisikan beberapa konstanta untuk menyediakan pengaturan untuk tampilan.
Fungsi pertama, disetup, menginisialisasi tampilan dan menampilkan layar pembuka logo. Ini kemudian menghapus tampilan setelah menunggu sekitar 2 detik. File utama kami, main.ino, memanggil disSetup di dalamnya mendirikan fungsi.
Fungsi lainnya dalam file ini, kecuali timerBar(), membentuk layar berbeda yang terlihat sepanjang permainan. berkas permainan, game.cpp, memanggil masing-masing fungsi ini.
- startGame(): Fungsi ini mengontrol layar pertama yang dilihat pemain. Itu hanya menanyakan apakah mereka siap saat memanggil switchInstance fungsi yang ditemukan dalam file game.
- startingGame(): Setelah pemain memulai permainan, layar ini menampilkan hitungan mundur singkat. Ini kemudian mengubah status game agar sesuai.
- inGame(): Ini adalah fungsi tampilan kami yang paling kompleks, menggunakan tiga variabel untuk memuat setiap putaran permainan. Ini dimulai dengan pernyataan if yang menentukan mana dari tiga ubin yang harus diisi, diikuti dengan menampilkan ubin dan level serta skor pemain.
- timerBar(): Fungsi ini menggunakan variabel untuk menampilkan bilah pengatur waktu di bagian bawah layar. Ini menunjukkan kepada pemain berapa banyak waktu yang mereka miliki untuk setiap putaran.
- successScreen(): Ini adalah fungsi sederhana yang menampilkan pesan setiap kali pemain berhasil menyelesaikan ronde.
- endGame(): Fungsi terakhir ini menampilkan layar game over dengan skor pemain dan opsi untuk memulai game lagi.
File Kode Game (game.cpp)
Terakhir, sebagai file terakhir untuk dijelajahi, saatnya melihat kode game. File ini, seperti yang lain, dimulai dengan penyertaan file library.h. Ini juga berisi daftar panjang variabel integer berbeda yang kami gunakan selama permainan.
Anda akan menemukan fungsi butSetup() sebelum yang lainnya. Fungsi setup() dalam file utama kita memanggil butSetup. Fungsi ini menggunakan variabel untuk mengatur tombol kita sebagai input yang bisa kita baca nanti.
- switchInstance(): Fungsi ini beralih di antara instance game, dari layar mulai ke layar game dan game over. Ia menerima variabel untuk memberi tahu status permainan mana yang harus diubah. Pernyataan if menunggu tombol ditekan untuk memulai game dari status startGame(). Pernyataan if lain memulai game lagi dari status endGame().
- gameState(): Fungsi ini mengatur tingkat kesulitan permainan berdasarkan skor pemain dan memanggil fungsi yang tepat tergantung pada keadaan permainan. Ini dimulai dengan serangkaian pernyataan if yang menetapkan variabel berdasarkan skor pemain, diikuti oleh lebih banyak pernyataan if untuk memeriksa instance saat ini.
- tileSelector(): Fungsi ini menghasilkan angka acak antara 0 dan 2 yang memberi tahu game mana dari tiga ubin yang harus diisi pada waktu tertentu.
- theGame(): Fungsi ini bisa dibilang yang paling penting dari semuanya. Ini memanggil pemilih ubin dan dalam permainan fungsi, memilih ubin baru dan menampilkannya di layar. Setelah ini, Anda akan menemukan loop for yang berfungsi sebagai pengatur waktu untuk setiap putaran. Ini berisi satu set pernyataan if yang mengambil penekanan tombol dan menentukan apakah mereka benar.
Membangun Game Arduino Genggam Anda Sendiri
Artikel ini adalah pendamping untuk kode proyek yang ditemukan di GitHub. Anda dapat menemukan informasi lebih lanjut tentang baris kode tertentu yang telah kami gunakan di komentar di file tersebut. Tetapi Anda juga dipersilakan untuk memuatnya ke Arduino Anda dan menikmati kesenangannya.
Kreativitas adalah kunci dalam dunia pengembangan game, dan kami mendorong Anda untuk mengerjakan ide game Anda sendiri di samping yang satu ini.
10 Proyek Radio Arduino Terbaik
Baca Selanjutnya
Topik-topik yang berkaitan
- Pemrograman
- buatan sendiri
- Ide Proyek DIY
- Tutorial Proyek DIY
- Arduino
- Pemrograman
Tentang Penulis
Samuel adalah penulis teknologi yang berbasis di Inggris dengan hasrat untuk semua hal DIY. Memulai bisnis di bidang pengembangan web dan pencetakan 3D, serta bekerja sebagai penulis selama bertahun-tahun, Samuel menawarkan wawasan unik tentang dunia teknologi. Berfokus terutama pada proyek teknologi DIY, dia tidak lebih dari berbagi ide menyenangkan dan menarik yang dapat Anda coba di rumah. Di luar pekerjaan, Samuel biasanya dapat ditemukan bersepeda, bermain video game PC, atau berusaha mati-matian untuk berkomunikasi dengan kepiting peliharaannya.
Berlangganan newsletter kami
Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!
Klik di sini untuk berlangganan