coseru.id - Coding asik & Seru

🔍 Cari Materi & Kelas

Robotika & Otomasi Tingkat: Pemula 3 x dilihat

Simon Dice: Permainan Mengingat Urutan LED dengan Arduino

Simon Dice: Permainan Mengingat Urutan LED dengan Arduino

Ringkasan Proyek

Buat permainan Simon Dice menggunakan Arduino UNO, empat LED berwarna, empat tombol permainan, satu tombol mulai, dan passive buzzer. Pemain harus mengingat dan mengulangi urutan LED yang ditampilkan oleh sistem. Setiap kali berhasil, urutan akan bertambah panjang dan kecepatannya meningkat sehingga permainan semakin menantang. Proyek ini memperkenalkan konsep digital input, digital output, penggunaan LED, push button, buzzer, array, serta button debouncing.

Bahan & Komponen

Daftar perangkat keras, modul, dan tools yang dibutuhkan untuk merakit proyek ini.

Daftar Komponen & Perangkat Keras

  • 1x Arduino UNO (Mikrokontroler utama yang mengatur urutan LED, membaca input tombol, dan mengontrol suara buzzer).
  • 1x LED Merah (Menampilkan salah satu warna dalam urutan permainan).
  • 1x LED Biru (Menampilkan salah satu warna dalam urutan permainan).
  • 1x LED Hijau (Menampilkan salah satu warna dalam urutan permainan).
  • 1x LED Kuning (Menampilkan salah satu warna dalam urutan permainan).
  • 4x Tactile Push Button (Digunakan pemain untuk mengulangi urutan LED sesuai warna yang ditampilkan).
  • 1x Tactile Push Button tambahan (Digunakan sebagai tombol untuk memulai permainan).
  • 5x Resistor 10k ohm (Digunakan sebagai pull-up resistor untuk kelima tombol).
  • 4x Resistor 220 ohm (Membatasi arus listrik pada masing-masing LED).
  • 1x Passive Buzzer (Menghasilkan nada berbeda sesuai LED yang menyala dan melodi ketika permainan dimulai atau berakhir).
  • 1x Resistor 100 ohm (Digunakan sebagai resistor pembatas arus untuk buzzer).
  • 24x Male-to-Male Jumper Wires (Menghubungkan komponen dengan Arduino UNO).
  • 1x Breadboard (Media untuk menyusun rangkaian elektronik tanpa solder).
  • 1x Kabel USB Arduino (Menghubungkan Arduino UNO ke komputer sekaligus menyediakan sumber daya).

Software Pendukung

  • Arduino IDE (Digunakan untuk menulis, memeriksa, dan mengunggah program ke Arduino UNO).
  • Arduino C++ (Bahasa pemrograman untuk mengatur LED, membaca tombol, menghasilkan suara, dan menjalankan logika permainan).
  • Arduino Core Functions (Menggunakan fungsi bawaan seperti pinMode(), digitalWrite(), digitalRead(), tone(), delay(), millis(), random(), dan randomSeed()).

Peralatan Tambahan

  • 1x Komputer atau Laptop (Untuk menjalankan Arduino IDE).
  • 1x Kabel USB (Untuk mengunggah program ke Arduino UNO).

Langkah Pembuatan

Khusus Member

Panduan perakitan tahap demi tahap dan catatan proses pengerjaan.

Simon Dice adalah permainan memori elektronik yang mengharuskan pemain mengingat urutan warna dan mengulanginya menggunakan tombol. Arduino UNO akan menyalakan empat LED dalam urutan tertentu. Setiap LED juga menghasilkan nada berbeda melalui passive buzzer. Jika pemain berhasil mengulangi seluruh urutan, sistem menambahkan satu langkah baru dan meningkatkan kecepatan permainan.

Langkah 1: Siapkan Seluruh Komponen

Siapkan Arduino UNO, empat LED dengan warna berbeda (merah, biru, hijau, dan kuning), lima tactile push button, lima resistor 10k ohm, empat resistor 220 ohm, satu passive buzzer, satu resistor 100 ohm, breadboard, dan kabel jumper. Pastikan seluruh komponen tersedia sebelum memulai perakitan.

\"ProyekTampilan utama proyek Simon Dice oleh Gonza_VGO.

Langkah 2: Pasang Empat LED pada Breadboard

Pasang empat LED dengan warna berbeda pada breadboard. Setiap LED akan mewakili satu tombol dan satu nada dalam permainan. Hubungkan anoda (kaki positif) setiap LED ke pin digital Arduino melalui resistor 220 ohm. Hubungkan katoda (kaki negatif) ke GND.

Gunakan susunan pin berikut: LED merah pada pin 2, LED biru pada pin 3, LED kuning pada pin 4, dan LED hijau pada pin 5. Pastikan setiap LED menggunakan resistor pembatas arus masing-masing.

Langkah 3: Hubungkan Empat Tombol Permainan

Pasang empat tactile push button pada breadboard. Setiap tombol berfungsi untuk mewakili satu warna LED. Hubungkan tombol merah ke pin digital 9, tombol biru ke pin digital 8, tombol kuning ke pin digital 7, dan tombol hijau ke pin digital 6.

Gunakan resistor 10k ohm sebagai pull-up resistor untuk setiap tombol. Dalam konfigurasi pull-up eksternal, pin input dijaga pada kondisi HIGH ketika tombol tidak ditekan dan berubah menjadi LOW ketika tombol ditekan. Pastikan setiap tombol terhubung dengan benar dan tidak menyebabkan hubungan singkat.

Langkah 4: Pasang Tombol Mulai Permainan

Pasang satu push button tambahan sebagai tombol untuk memulai permainan. Hubungkan tombol ini ke pin digital 10 Arduino UNO. Gunakan satu resistor 10k ohm sebagai pull-up resistor. Tombol ini digunakan untuk memulai permainan baru setelah rangkaian siap.

Langkah 5: Hubungkan Passive Buzzer

Hubungkan passive buzzer ke pin digital 11 Arduino UNO. Pasang resistor 100 ohm secara seri sesuai rangkaian yang digunakan untuk membatasi arus. Hubungkan terminal lainnya ke GND.

Passive buzzer digunakan untuk menghasilkan nada dengan frekuensi berbeda. Setiap LED mempunyai nada tersendiri sehingga pemain dapat mengenali urutan melalui kombinasi cahaya dan suara.

Langkah 6: Periksa Seluruh Rangkaian

Periksa semua koneksi sebelum menyalakan Arduino. Pastikan empat LED terhubung ke pin 2 sampai 5, empat tombol permainan ke pin 6 sampai 9, tombol mulai ke pin 10, dan buzzer ke pin 11. Pastikan resistor LED dan resistor tombol terpasang sesuai fungsi masing-masing. Seluruh komponen harus menggunakan GND yang sama.

Langkah 7: Siapkan Arduino IDE

Buka Arduino IDE pada komputer. Buat sketch baru dan pastikan board Arduino UNO telah dipilih melalui menu Tools. Proyek ini menggunakan fungsi bawaan Arduino sehingga tidak memerlukan library eksternal tambahan.

Program menggunakan beberapa fungsi penting, seperti pinMode() untuk menentukan mode pin, digitalWrite() untuk mengontrol LED, digitalRead() untuk membaca tombol, tone() untuk menghasilkan suara, millis() untuk mencatat waktu, serta random() untuk menghasilkan urutan warna secara acak.

Langkah 8: Masukkan dan Unggah Program

Salin kode program Simon Dice yang tersedia pada bagian Code ke Arduino IDE. Simpan sketch dengan nama GGA_Simon_Dice.ino. Hubungkan Arduino UNO ke komputer menggunakan kabel USB. Pilih board Arduino UNO dan port yang sesuai.

Klik Verify untuk memeriksa kesalahan kompilasi. Jika berhasil, klik Upload untuk mengunggah program ke Arduino UNO.

Langkah 9: Mulai Permainan

Setelah program berhasil diunggah, sistem akan menunggu pemain menekan tombol mulai. Ketika tombol mulai ditekan, variabel ronda berubah menjadi 1 dan permainan dimulai.

Arduino menjalankan animasi LED sebagai tanda permainan dimulai. Keempat LED menyala secara bergantian, kemudian seluruh LED berkedip bersama. Setelah itu, passive buzzer memainkan melodi pembuka dan sistem menampilkan urutan pertama yang terdiri dari satu LED.

Langkah 10: Perhatikan Urutan LED dan Suaranya

Perhatikan LED yang menyala secara bergantian. Setiap LED mempunyai nada berbeda yang dihasilkan oleh passive buzzer. LED merah, biru, kuning, dan hijau masing-masing mempunyai frekuensi suara yang berbeda.

Program menyimpan urutan LED ke dalam array bernama sequence. Setiap elemen array menyimpan nomor pin LED yang harus ditampilkan. Pemain perlu mengingat urutan tersebut sebelum memasukkan jawabannya melalui tombol.

Langkah 11: Ulangi Urutan Menggunakan Tombol

Setelah sistem selesai menampilkan urutan, tekan tombol yang sesuai dengan LED yang sebelumnya menyala. Contohnya, jika urutan yang ditampilkan adalah hijau, merah, dan biru, pemain harus menekan tombol hijau, kemudian merah, lalu biru.

Program membaca input tombol melalui digitalRead(). Setiap tombol yang ditekan akan menyalakan LED yang sesuai dan menghasilkan nada melalui buzzer. Sistem kemudian membandingkan tombol yang ditekan dengan urutan yang tersimpan dalam array.

Langkah 12: Naikkan Level Permainan

Jika seluruh urutan berhasil diulangi dengan benar, pemain berhasil menyelesaikan ronde tersebut. Sistem memberikan jeda sebelum menampilkan urutan berikutnya. Pada ronde selanjutnya, satu LED tambahan dimasukkan ke dalam urutan sehingga pemain harus mengingat lebih banyak langkah.

Kecepatan tampilan juga meningkat secara bertahap. Program mengurangi waktu penyalaan LED sebanyak 50 milidetik setiap kali pemain berhasil menyelesaikan satu ronde, dengan kecepatan minimum 50 milidetik.

Langkah 13: Kenali Button Debouncing

Ketika tombol mekanis ditekan, kontak di dalamnya dapat menghasilkan beberapa perubahan sinyal dalam waktu sangat singkat. Fenomena ini disebut button bouncing. Akibatnya, satu kali tekanan dapat terbaca sebagai beberapa tekanan oleh Arduino.

Untuk mengatasi masalah tersebut, program menggunakan fungsi millis() dan variabel rebote_retardo dengan nilai 50 milidetik. Sistem memeriksa selang waktu antara sinyal tombol sehingga perubahan yang terlalu cepat tidak langsung dianggap sebagai input baru.

Langkah 14: Akhiri Permainan

Jika pemain menekan tombol yang tidak sesuai dengan urutan, permainan dinyatakan berakhir. Keempat LED akan menyala dan buzzer memainkan melodi Game Over. Setelah itu, seluruh LED dimatikan dan variabel ronde serta kecepatan dikembalikan ke nilai awal.

Program kemudian kembali menunggu pemain menekan tombol mulai untuk memulai permainan baru.

Langkah 15: Uji dan Kembangkan Permainan

Setelah permainan berhasil dijalankan, cobalah mengingat urutan LED yang semakin panjang. Perhatikan bagaimana kecepatan permainan berubah pada setiap ronde. Kamu juga dapat bereksperimen dengan mengubah nilai kecepatan awal, durasi nada, atau melodi permainan.

Catatan Teknis Penting Sebelum Implementasi

Kode asli memiliki beberapa hal yang perlu diperbaiki sebelum digunakan. Pertama, random(2,5) menghasilkan angka 2, 3, dan 4 karena batas atas fungsi random() tidak disertakan. Akibatnya, LED pada pin 5 tidak pernah dipilih. Untuk empat LED, gunakan random(2,6). Kedua, perulangan yang menggunakan byte x dan kondisi x >= 2 dapat mengalami unsigned underflow setelah x mencapai 0 sehingga perulangan tidak berhenti. Gunakan tipe int untuk variabel penghitung perulangan tersebut. Ketiga, terdapat deklarasi MAX_RONDAS sebesar 255 dan array sequence[256], tetapi kapasitas dan batas indeks harus diperiksa agar tidak terjadi akses di luar array. Keempat, kode menggunakan pinMode(INPUT) dan digitalWrite(HIGH) untuk mengaktifkan pull-up internal pada Arduino AVR. Konfigurasi ini bekerja pada Arduino UNO, tetapi INPUT_PULLUP lebih jelas untuk implementasi baru dengan tombol yang dihubungkan ke GND. Kelima, fungsi flash_respuesta_incorrecta() pada kode asli tidak menjalankan tiga kali kedipan seperti yang disebutkan dalam komentar. Bagian ini dapat diperbaiki jika ingin menyesuaikan perilaku permainan dengan deskripsi awal.

🔒
Akses Gratis Khusus Member

Buka Seluruh Panduan, Skema & Source Code

Dapatkan akses penuh ke langkah perakitan detail, diagram sirkuit lengkap, dan source code siap pakai. Gratis selamanya!

✓ Akses Gratis Selamanya
✓ Copy-Paste Source Code
✓ Kembali Otomatis ke Proyek

Petualangan Belajar di coseru

💡 Saksikan keseruan anak-anak belajar merakit robot dan coding! Daftar Kelas Uji Coba →