Mesin Slot
Proyek ini menggabungkan perangkat keras dan perangkat lunak untuk menciptakan mesin slot interaktif. Perangkat keras meliputi tombol, layar, dan sirkuit elektronik, semuanya dikendalikan oleh papan Arduino. Perangkat lunak mengelola masukan, keluaran, dan fungsionalitas sistem, memastikan pengalaman pengguna yang mulus. Kami menguraikan langkah-langkah utama untuk merakit komponen dan memprogram sistem, menunjukkan bagaimana kreativitas dan teknik dapat menghadirkan ide-ide inovatif.
Perlengkapan
Elektronik:
- 1. Arduino UNO
- 2. Catu daya: Adaptor AC/DC model JCY-1200
- 3. Input: AC100-249C~; Output: 12 V
- 4. Layar utama: Layar TFT Hiletgo (ILI9341)
- 5. Layar kredit: LCD 1602A
- 6. 5 resistor 3,3k ohm
- 7. 5 resistor 2,2k ohm
- 8. Potensiometer (10k ohm)
- 9. Papan roti
- 10. Kabel jumper
- 11. Tombol
Perangkat Lunak dan Alat:
- 1. Arduino IDE
- 2. Besi solder
- 3. Pencetak 3D
- 4. Lem tembak
Langkah 1: Buat Prototipe Perangkat Keras
Pertama, kami membuat prototipe yang nantinya dapat dimodifikasi.
1. Layar Utama (Layar TFT Hiletgo)
Untuk bekerja, dihubungkan ke pembagi tegangan dengan resistor 2,2k dan 3,3k ke Arduino Uno.
2. Layar Kredit (LCD 1602A)
Dihubungkan secara normal dengan potensiometer 10k untuk perubahan kontras.
3. Tombol
Tombol dihubungkan ke pin analog Arduino: kuning, merah, hijau, dan hitam dengan fungsi: tombol main, tambah dana, naikkan taruhan, turunkan taruhan.
Tata letak pin untuk Layar TFT Hiletgo (ILI9341):
| Pin TFT | Pin Arduino | Catatan |
|---|---|---|
| VCC | 3.3V | Catu daya untuk layar TFT. |
| GND | GND | Sambungan ground. |
| CS | Digital 6 | Pin Chip Select. |
| RST | Digital 9 | Pin Reset. |
| DC | Digital 10 | Pin Data/Command. |
| SDI (MOSI) | Digital 11 | SPI Master Out Slave In (MOSI). |
| SCK | Digital 13 | SPI Clock. |
| LED | 3.3V | Catu daya backlight. |
Tata letak pin untuk LCD 1602:
| Pin LCD | Pin Arduino | Catatan |
|---|---|---|
| VSS | GND | Sambungan ground. |
| VDD | 5V | Catu daya untuk LCD. |
| VO | Pin tengah potensiometer | Penyesuaian kontras. Gunakan potensiometer 10kΩ. |
| RS | Digital 8 | Pin Register Select. |
| RW | GND | Pin Read/Write. Set ke GND untuk mode tulis saja. |
| E | Digital 7 | Pin Enable. |
| D4 | Digital 5 | Pin data D4. |
| D5 | Digital 4 | Pin data D5. |
| D6 | Digital 3 | Pin data D6. |
| D7 | Digital 2 | Pin data D7. |
| A (LED+) | 5V | Backlight positif |
| K (LED-) | GND | Backlight ground |
Langkah 2: Perangkat Lunak
Ikhtisar
Proyek ini mengimplementasikan permainan mesin slot menggunakan mikrokontroler Arduino Uno, yang dihubungkan dengan dua layar: Layar TFT Hiletgo (ILI9341) untuk menampilkan kisi dan animasi mesin slot, dan LCD 1602A untuk menampilkan informasi kredit dan taruhan secara dinamis. Permainan mendukung interaksi pengguna melalui tombol untuk bermain, menyesuaikan taruhan, dan menambah kredit. Permainan mensimulasikan perilaku mesin slot dengan menggabungkan bobot simbol berbasis probabilitas, logika pembayaran, dan mekanisme pembangkitan angka acak.
Fitur Utama
Rendering Simbol dan Kisi: Mesin slot menampilkan kisi 3x5 simbol yang dirender di Layar TFT Hiletgo. Simbol digambar sebagai bitmap menggunakan pustaka Adafruit_GFX dan Adafruit_ILI9341. Garis kemenangan (horizontal dan diagonal) dihitung secara dinamis, dan hasilnya ditampilkan di layar TFT.
Interaksi Pengguna: Tombol untuk bermain, menyesuaikan taruhan, dan menambah kredit. Pembaruan real-time kredit dan taruhan ditampilkan di LCD.
Logika Probabilitas dan Pembayaran: Sistem pemilihan acak berbobot menentukan frekuensi kemunculan simbol. Tabel pengali pembayaran mendefinisikan hadiah berdasarkan jumlah simbol yang cocok pada garis kemenangan.
Pustaka yang Digunakan
- Adafruit_GFX: Menyediakan fungsi rendering grafis penting, seperti menggambar bentuk, teks, dan bitmap. Digunakan untuk merender kisi dan simbol di layar TFT.
- Adafruit_ILI9341: Pustaka khusus untuk menghubungkan Layar TFT Hiletgo dengan driver ILI9341. Memungkinkan komunikasi SPI yang efisien dan rendering bitmap yang cepat.
- LiquidCrystal: Menyederhanakan interaksi dengan LCD 1602A. Digunakan untuk menampilkan data pengguna seperti kredit dan jumlah taruhan.
Logika Permainan
Rendering Simbol: Setiap simbol (misalnya Ceri, Apel, Tujuh) diwakili oleh gambar bitmap yang disimpan dalam memori. Fungsi drawSlotResult() merender simbol acak pada kisi berdasarkan indeks yang dipilih.
Sistem Probabilitas Berbobot: Setiap simbol memiliki bobot yang menentukan kemungkinan kemunculannya. Bobot yang lebih tinggi berarti kemunculan lebih sering. Contoh: Ceri dan Pisang memiliki bobot tertinggi, sehingga paling umum. Tujuh dan Bar memiliki bobot terendah, sehingga paling langka dan paling menguntungkan. Fungsi pickWeightedSymbol() menggunakan pendekatan probabilitas kumulatif untuk memilih simbol secara acak berdasarkan bobotnya.
Logika Pembayaran: Garis kemenangan ditentukan sebelumnya sebagai baris dan diagonal: 3 baris (Atas, Tengah, Bawah) dan 2 diagonal (Kiri atas ke kanan bawah dan Kiri bawah ke kanan atas). Untuk setiap garis kemenangan, jumlah simbol yang cocok dihitung. Pengali pembayaran diterapkan berdasarkan simbol dan jumlah kecocokan: Pembayaran = Pengali[Simbol][Jumlah Cocok] × (Taruhan/10). Contoh: Taruhan 20 dengan 3 "Ceri" yang cocok membayar 20×20/10=40.
Logika Tombol Main: Mengurangi taruhan saat ini dari kredit. Menghasilkan kisi 3x5 simbol acak. Mengevaluasi garis kemenangan dan menghitung pembayaran. Memperbarui tampilan dengan hasil atau "Game Over" jika tidak ada kredit tersisa.
Detail Teknis
Inisialisasi: Pin untuk tombol dan layar ditentukan. Layar diinisialisasi menggunakan pustaka masing-masing. Layar selamat datang dirender di Layar TFT saat startup.
Manajemen Kredit dan Taruhan Dinamis: LCD terus diperbarui dengan nilai kredit dan taruhan real-time. Tombol "Tambah Kredit" langsung menambahkan 200 kredit untuk permainan tanpa gangguan.
Optimasi Kinerja: Komunikasi SPI memastikan rendering yang efisien di Layar TFT. Penundaan minimal diperkenalkan untuk menyeimbangkan kecepatan permainan dan kelancaran.
Alur Proyek
Startup: Layar selamat datang ditampilkan di TFT. Kredit dan taruhan diinisialisasi di LCD.
Bermain: Pengguna menyesuaikan taruhan menggunakan tombol "Naikkan Taruhan" dan "Turunkan Taruhan". Tombol "Main" memulai permainan, mengurangi taruhan dan menampilkan simbol acak. Pembayaran dihitung untuk garis kemenangan, dan LCD memperbarui kredit secara dinamis.
Game Over: Pesan "Kredit Tidak Cukup" ditampilkan di LCD jika kredit di bawah taruhan saat ini. Pengguna dapat menambah kredit menggunakan tombol khusus.
Langkah tambahan untuk peningkatan di masa mendatang: Efek Visual: Tambahkan animasi transisi simbol dan garis kemenangan. Efek Suara: Sertakan suara untuk tekanan tombol, putaran gulungan, dan kemenangan. Fitur Permainan yang Diperluas: Perkenalkan putaran bonus atau fitur jackpot. Tambahkan dukungan untuk menyimpan dan melanjutkan status permainan. Informasi lebih lanjut dan file program tersedia.
Langkah 3: Menyolder Elektronik
Ada tiga komponen utama: layar utama, layar taruhan, dan tombol.
1. Layar utama:
Tata letak: Layar → kabel jantan-betina → pembagi tegangan → pin papan → pin digital Arduino.
2. Layar taruhan:
Tata letak: Layar → kabel jantan-betina → pin papan → pin digital Arduino.
3. Tombol:
Tata letak: Tombol → papan → kabel jantan-betina → pin analog Arduino.
Kedua layar harus dipasang ke papan bantu dan disolder untuk memudahkan manajemen pin/kabel, sementara tombol langsung dihubungkan ke pin analog.
Langkah 4: Cetak 3D Kotak/Rangka
Desain Enklosur Cetak 3D: Enklosur dirancang menggunakan perangkat lunak 3ds Max dan terdiri dari tiga komponen:
- Kotak Utama: Alas 7,4 cm x 9 cm. Bagian atas 9 cm x 9 cm dengan tinggi 15 cm. Fungsi: Menampung elektronik internal.
- Tutup Belakang: Dimensi 8,4 cm x 15 cm. Fungsi: Meluncur ke bagian belakang untuk penutupan yang aman dan akses.
- Kaki: Penempelan: Dilem ke dasar kotak. Fungsi: Memberikan stabilitas dan elevasi.
Perakitan: Lem kaki ke dasar kotak. Pasang komponen internal. Geser tutup belakang untuk menutup. Informasi lebih lanjut dan file untuk pencetakan 3D tersedia.
Langkah 5: Ringkasan
Proyek Mesin Slot adalah mesin slot interaktif yang didukung oleh Arduino Uno. Menggunakan layar TFT Hiletgo untuk animasi dan LCD 1602A untuk pembaruan kredit dan taruhan, dengan interaksi pengguna melalui tombol. Perangkat lunak menampilkan simbol acak berbobot dan perhitungan pembayaran, memastikan pengalaman bermain yang dinamis. Komponen utama ditempatkan dalam enklosur cetak 3D, dan sistem menggunakan pustaka seperti Adafruit_GFX untuk grafis yang halus. Proyek ini menunjukkan kombinasi perangkat keras dan perangkat lunak untuk menciptakan perangkat yang menarik dengan potensi peningkatan di masa mendatang.