Game & Interaktif
Tingkat: Pemula
Estimasi: 3 jam9 x dilihat
Membuat Mini Pinball Game dengan Arduino
Ringkasan Proyek
Buat permainan mini pinball menggunakan Arduino UNO dan display TM1628 dari pemutar DVD bekas. Dua servo motor berfungsi sebagai flipper, enam LED menjadi target permainan, dan buzzer memberikan efek suara. Pemain menekan tombol untuk menggerakkan flipper, mengumpulkan skor, serta menikmati animasi pada display.
Bahan & Komponen
Daftar perangkat keras, modul, dan tools yang dibutuhkan untuk merakit proyek ini.
Komponen Elektronik
Arduino UNO × 1
Display DVD TM1628 × 1
Micro Servo Motor SG90 × 2
LED × 6
Resistor 220 ohm × 6
Buzzer × 1
Push button × 2
Breadboard × 1
Kabel jumper
Perangkat Lunak
Arduino IDE
Library TM1628.h
Library Servo.h (tersedia pada Arduino IDE)
Bahan untuk Struktur Permainan
Kardus atau karton tebal, kayu, atau bahan cetak 3D
Bahan pendukung untuk memasang servo, LED, dan display
Catatan: Penulis memanfaatkan display TM1628 bekas pemutar DVD. Bahan struktur permainan dapat dipilih sesuai ketersediaan. Komponen mekanis untuk bola pinball fisik tidak dijelaskan sebagai bagian dari daftar komponen proyek.
Langkah Pembuatan
Khusus Member
Panduan perakitan tahap demi tahap dan catatan proses pengerjaan.
1. Siapkan Display TM1628
Lepaskan dan siapkan display TM1628 dari pemutar DVD bekas. Display ini digunakan untuk menampilkan angka skor dan animasi bergaya DVD.
Dokumentasi perakitan dan pengujian hardware
2. Buat Area Permainan
Siapkan struktur permainan menggunakan kardus, kayu, atau bahan cetak 3D. Buat area untuk memasang enam LED sebagai target dan dua servo sebagai flipper di sisi kiri dan kanan.
Dokumentasi perakitan dan pengujian hardware
3. Pasang Dua Servo Motor
Pasang servo SG90 di sisi kiri dan kanan area permainan. Kedua servo berfungsi sebagai flipper yang bergerak ketika pemain menekan tombol.
Dokumentasi perakitan dan pengujian hardware
4. Pasang Enam LED Target
Tempatkan enam LED pada area permainan. Hubungkan masing-masing LED dengan resistor 220 ohm sebagai pembatas arus. Arduino akan menyalakan LED secara acak untuk menunjukkan target yang sedang aktif.
Dokumentasi perakitan dan pengujian hardware
5. Hubungkan Tombol
Pasang dua push button untuk mengendalikan flipper kiri dan kanan. Tombol kiri dihubungkan ke pin digital 2 dan tombol kanan ke pin digital 3. Program menggunakan konfigurasi INPUT_PULLUP.
6. Hubungkan Buzzer
Hubungkan buzzer ke pin digital 11. Buzzer akan menghasilkan efek suara ketika pemain menekan flipper dan memperoleh poin.
7. Hubungkan Display TM1628
Hubungkan tiga jalur komunikasi display ke Arduino UNO: DATA ke pin 7, CLOCK ke pin 6, dan STROBE ke pin 8. Display digunakan untuk menampilkan angka skor dan animasi.
8. Hubungkan Seluruh Komponen
Susun rangkaian menggunakan breadboard dan kabel jumper. Periksa kembali koneksi LED, resistor, tombol, servo, buzzer, dan display sebelum menyalakan perangkat.
9. Unggah Program Arduino
Buka Arduino IDE dan pasang library TM1628 serta Servo. Pilih board Arduino UNO dan port yang sesuai, kemudian unggah program permainan.
10. Mulai Permainan
Setelah perangkat dinyalakan, Arduino akan menyalakan LED target secara acak. Tekan tombol kiri atau kanan untuk menggerakkan flipper yang sesuai. Setiap aktivasi flipper akan memicu efek suara, animasi LED, dan penambahan skor berdasarkan logika program.
11. Amati Skor dan Animasi
Skor ditampilkan pada display TM1628. Ketika skor bertambah, angka akan menampilkan efek gelombang dan animasi cakram DVD akan bergerak lebih cepat. Program juga memberikan efek khusus ketika pemain mencapai kelipatan skor tertentu.
Catatan keselamatan: Pastikan servo mendapat suplai daya yang mencukupi dan sambungan GND rangkaian terhubung dengan benar. Hindari menggerakkan mekanisme servo secara paksa. Proses pemotongan bahan dan penyolderan perlu dilakukan dengan pengawasan orang dewasa.
🔒
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!
Lepaskan dan siapkan display TM1628 dari pemutar DVD bekas. Display ini digunakan untuk menampilkan angka skor dan animasi bergaya DVD.
Dokumentasi perakitan dan pengujian hardware
2. Buat Area Permainan
Siapkan struktur permainan menggunakan kardus, kayu, atau bahan cetak 3D. Buat area untuk memasang enam LED sebagai target dan dua servo sebagai flipper di sisi kiri dan kanan.
Dokumentasi perakitan dan pengujian hardware
3. Pasang Dua Servo Motor
Pasang servo SG90 di sisi kiri dan kanan area permainan. Kedua servo berfungsi sebagai flipper yang bergerak ketika pemain menekan tombol.
Dokumentasi perakitan dan pengujian hardware
4. Pasang Enam LED Target
Tempatkan enam LED pada area permainan. Hubungkan masing-masing LED dengan resistor 220 ohm sebagai pembatas arus. Arduino akan menyalakan LED secara acak untuk menunjukkan target yang sedang aktif.
Dokumentasi perakitan dan pengujian hardware
5. Hubungkan Tombol
Pasang dua push button untuk mengendalikan flipper kiri dan kanan. Tombol kiri dihubungkan ke pin digital 2 dan tombol kanan ke pin digital 3. Program menggunakan konfigurasi INPUT_PULLUP.
6. Hubungkan Buzzer
Hubungkan buzzer ke pin digital 11. Buzzer akan menghasilkan efek suara ketika pemain menekan flipper dan memperoleh poin.
7. Hubungkan Display TM1628
Hubungkan tiga jalur komunikasi display ke Arduino UNO: DATA ke pin 7, CLOCK ke pin 6, dan STROBE ke pin 8. Display digunakan untuk menampilkan angka skor dan animasi.
8. Hubungkan Seluruh Komponen
Susun rangkaian menggunakan breadboard dan kabel jumper. Periksa kembali koneksi LED, resistor, tombol, servo, buzzer, dan display sebelum menyalakan perangkat.
9. Unggah Program Arduino
Buka Arduino IDE dan pasang library TM1628 serta Servo. Pilih board Arduino UNO dan port yang sesuai, kemudian unggah program permainan.
10. Mulai Permainan
Setelah perangkat dinyalakan, Arduino akan menyalakan LED target secara acak. Tekan tombol kiri atau kanan untuk menggerakkan flipper yang sesuai. Setiap aktivasi flipper akan memicu efek suara, animasi LED, dan penambahan skor berdasarkan logika program.
11. Amati Skor dan Animasi
Skor ditampilkan pada display TM1628. Ketika skor bertambah, angka akan menampilkan efek gelombang dan animasi cakram DVD akan bergerak lebih cepat. Program juga memberikan efek khusus ketika pemain mencapai kelipatan skor tertentu.
Catatan keselamatan: Pastikan servo mendapat suplai daya yang mencukupi dan sambungan GND rangkaian terhubung dengan benar. Hindari menggerakkan mekanisme servo secara paksa. Proses pemotongan bahan dan penyolderan perlu dilakukan dengan pengawasan orang dewasa.
Skema & Diagram Sirkuit
Diagram Rangkaian Mini Pinball
Diagram koneksi Arduino UNO dengan display TM1628, dua servo, enam LED, buzzer, dan dua tombol.
Pemetaan Pin
TM1628 DATA: D7
TM1628 CLOCK: D6
TM1628 STROBE: D8
Servo kiri: D9
Servo kanan: D10
Buzzer: D11
Tombol kiri: D2
Tombol kanan: D3
LED target: A1, A2, A3, A4, A5, dan D12
Setiap LED menggunakan resistor 220 ohm. Ikuti diagram asli untuk memastikan sambungan daya dan GND sesuai.
Kode Program
Program Arduino
Program menggunakan library TM1628.h untuk mengendalikan display dan Servo.h untuk menggerakkan kedua flipper.
Program memilih LED target secara acak dan mempercepat pergantian target secara bertahap.
Belum ada deteksi tabrakan nyata: setiap penekanan tombol menggerakkan servo dan memanggil fungsi penambahan skor, terlepas dari target yang sedang menyala. Jadi, sistem saat ini lebih tepat disebut simulasi permainan pinball dengan flipper dan target LED.
Variabel currentLed dimulai dengan nilai -1. Jika tombol ditekan sebelum target pertama dipilih, fungsi hitEffect() dapat mengakses indeks LED yang tidak valid. Perlu pemeriksaan tambahan sebelum mengakses array.
Tidak ada mekanisme debounce tombol. Penekanan yang ditahan dapat memicu gerakan flipper berulang kali.
Kecepatan permainan meningkat melalui pengurangan nilai speed hingga batas 120 milidetik.
Skor bertambah satu poin setiap aktivasi yang diterima, kemudian nilai poin meningkat setiap kelipatan sepuluh hingga maksimal lima poin per aktivasi.
Library TM1628 yang digunakan harus kompatibel dengan fungsi begin() dan setSegments() pada kode ini.