Daftar Isi:

Arduino: Mesin Pinball: 8 Langkah (dengan Gambar)
Arduino: Mesin Pinball: 8 Langkah (dengan Gambar)

Video: Arduino: Mesin Pinball: 8 Langkah (dengan Gambar)

Video: Arduino: Mesin Pinball: 8 Langkah (dengan Gambar)
Video: Lego berbentuk motor jadi berantakan gara gara ini 2024, November
Anonim
Image
Image

Karena saya selalu menyukai mesin pinball dan elektronik, saya memutuskan untuk membuat mesin pinball saya sendiri. Saya memilih Arduino untuk pemrograman dan elektronik, karena ini adalah platform yang sangat mudah diakses yang ringkas dan mudah digunakan.

Dalam panduan ini saya akan menjelaskan proses pengembangan saya, jadi mungkin salah satu dari Anda penggemar bisa membuat sesuatu yang serupa.

Langkah 1: Membangun Kasus

Membangun Kasus
Membangun Kasus

Mari kita mulai dengan kasus mesin pinball. Saya membuat konstruksi yang cukup sederhana. Saya menggergaji pelat bawah, dan menggunakan 4 pilar kayu kecil di sudut untuk menghubungkan potongan dinding. Ukuran kasing Anda adalah pilihan Anda sendiri, saya memilih untuk membuatnya sedikit lebih kecil dari mesin pinball asli karena saya tidak berencana menambahkan ekstra super spektakuler untuk mengisi ruang. Saya menggunakan sekrup dan lem untuk membuat kasing sekokoh mungkin. Di bagian belakang saya mengebor dua lubang di bagian lantai untuk kedua kaki yang akan memberi mesin pinball kemiringan ikonik. Sekali lagi, ketinggian kaki terserah Anda. Semakin tinggi Anda membuat kaki, semakin cepat bola akan menggelinding (ke bawah).

Langkah 2: Membangun Mekanik Flipper

Membangun Mekanik Flipper
Membangun Mekanik Flipper

Karena saya ingin membatasi biaya proyek ini, saya memutuskan untuk membuat sirip mekanis sepenuhnya daripada sirip elektronik. Jika Anda tertarik dengan sirip elektronik, Anda dapat menggunakan konstruksi yang agak sama, tetapi dengan apa yang disebut 'solenoid' terhubung (solenoid dengan daya yang cukup untuk mengontrol sirip terlalu mahal untuk saya).

Saya mulai dengan mengebor dua lubang di bagian bawah untuk titik pivot kedua sirip. Saya mengebor lubang (menurut saya) agak terlalu dekat satu sama lain, dan ini menyebabkan permainan menjadi agak terlalu mudah pada akhirnya. Jadi berhati-hatilah untuk tidak menempatkan sirip terlalu dekat satu sama lain, kecuali jika Anda menginginkan gaya permainan yang mudah.

Saya juga mengebor dua lubang di kedua dinding samping sejajar dengan lubang sirip. Lubang-lubang ini akan digunakan untuk dua kancing sirip.

Saya menggunakan pegas untuk menarik sirip kembali ke posisi semula, dan membuat konstruksi berputar antara sirip dan tombol untuk membuatnya berputar saat tombol ditekan. Untuk menghentikan pegas agar tidak menarik sirip terlalu jauh, saya memasang dua sekrup untuk menahan sirip pada posisi semula.

Langkah 3: Menempatkan Dinding

Menempatkan Dinding
Menempatkan Dinding

Saya menempatkan beberapa dinding untuk mengarahkan pinball ke arah sirip. Mereka sangat sederhana untuk dibuat. Cukup bor 3 lubang di bagian bawah casing, dan tekan tiga pin kayu. Bungkus karet gelang di sekitar pin dan selesai.

Langkah 4: Menambahkan Blok Skor

Menambahkan Blok Skor
Menambahkan Blok Skor
Menambahkan Blok Skor
Menambahkan Blok Skor

Blok skor adalah salah satu bagian terpenting dari mesin pinball, jadi pastikan Anda melakukan bagian ini dengan benar. Saya membuat tiga blok skor untuk mesin pinball saya, tetapi sekali lagi ini semua terserah Anda.

Saya menggergaji sepotong kecil sapu, dan melilitkan kawat tembaga di sekelilingnya. Arduino akan memberi daya pada kabel tembaga ini secara konstan dengan 5V. Saya menyolder empat pegas pena ke samping untuk kontak yang lebih baik dengan bola.

Cara kerja blok skor, adalah bola menyelesaikan sirkuit yang mengarah ke pin input di Arduino. Jadi yang saya lakukan adalah menempelkan aluminium foil di bagian bawah casing (TIDAK MENYENTUH TEMBAGA) dan menyambungkan foil ke pin pada Arduino. Setiap kali bola mengenai tembaga dan aluminium, rangkaian selesai dan Arduino akan menerima sinyal.

Saya menghubungkan semua blok skor bersama-sama menggunakan aluminium foil, tetapi perlu diingat bahwa sisi lengket TIDAK menghantarkan listrik.

Langkah 5: Menambahkan Game Over Kontak

Menambahkan Game Over Kontak
Menambahkan Game Over Kontak

Di bagian bawah mesin pinball, di antara sirip, saya menambahkan game over contact. Setiap kali bola mengenai kontak ini, pemain akan kehilangan bola. Konstruksi yang saya buat sangat mirip dengan blok skor. Hanya di sini saya menggunakan dua sekrup, dan sekali lagi sepotong aluminium foil di bagian bawah.

Langkah 6: Mengebor Lubang Kabel

Mengebor Lubang Kabel
Mengebor Lubang Kabel
Mengebor Lubang Kabel
Mengebor Lubang Kabel
Mengebor Lubang Kabel
Mengebor Lubang Kabel

Sebelum kita mulai memasang kabel semuanya ke Arduino, kita perlu mengebor beberapa lubang untuk kabelnya terlebih dahulu. Saya mengebor sebuah lubang melalui kedua potongan aluminium foil, jadi satu lubang di aluminium foil di dekat blok skor, dan satu lubang di aluminium foil di dekat game over contact.

Selain itu, saya juga membuat lubang di kiri bawah, di antara dinding, untuk kabel yang menuju ke gerbang bola tambahan Servo.

Juga harus ada lubang untuk kabel yang terhubung ke LCD di bagian bawah.

Langkah 7: Menghubungkan Semuanya

Menghubungkan Semuanya
Menghubungkan Semuanya
Menghubungkan Semuanya
Menghubungkan Semuanya

Saya membuat skema ini untuk mendapatkan gambaran yang lebih baik tentang ke mana semua kabel harus pergi. Salib adalah titik di mana kabel terhubung. Saya mencoba menyolder sebanyak mungkin untuk membuat semuanya sedikit lebih stabil dan dapat diandalkan. Pengkabelan akan memakan waktu, tetapi setelah ini selesai, Anda hampir sampai!

Langkah 8: Mengunggah Kode

Unggah kode berikut ke Arduino Anda untuk membuat mesin pinball Anda hidup!

// Sertakan perpustakaan untuk lcd

#sertakan #sertakan

// Inisialisasi pin data lcd

LiquidCrystal lcd (7, 8, 9, 10, 11, 12);

// Buat servo

Bola servoGateServo;

// Buat variabel untuk pin yang kita gunakan

int gameoverPin = 6; int skorPin = 5; int pin speaker = 4; int ballGateServoPin = 3;

// Inisialisasi variabel gameplay untuk mesin pinball

int skor = 0; int skor tertinggi = 500; bool highscoreReached = salah; int bola = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = salah;

//jalankan kode ini sekali pada frame pertama

void setup() { // Atur pinMode untuk pin yang kita gunakan pinMode(gameoverPin, INPUT); pinMode(scorePin, INPUT);

// Inisialisasi lcd dengan memberikan lebar dan tinggi

lcd.begin(16, 2);

// Pasang servo gerbang bola ke pin yang sesuai

ballGateServo.attach(ballGateServoPin);

// Atur ulang servo gerbang ke posisi awal

ballGateServo.write(0); }

// Jalankan kode ini setiap frame

void loop() { // Menangkap input pin int gameoverState = digitalRead(gameoverPin); int scoreState = digitalRead(scorePin);

// Tambahkan ke skor jika input diterima

if (scoreState) { nada(pin speaker, 1000); skor += 10; } else { noTone(4); }

// Kurangi dari bola jika lubang gameover dipicu

if (gameoverState dan !gameoverTriggered) { bola -= 1; gameoverTriggered = benar; gameoverTimer = gameoverTimerDuration; }

// Mulai timer gameover segera setelah bola tidak menyentuh kontak gameover

if (!gameoverState) { if (gameoverTimer >= 1) { gameoverTimer -= 1; } else { gameoverTriggered = false; } }

// Kedipkan teks gameover ke lcd dan setel ulang skor dan bola

if (bola <= 0) { lcd.setCursor(0, 0); for (int i = 5; i>= 1; i--) { lcd.clear(); penundaan (250); lcd.print("PERMAINAN SELESAI"); lcd.setCursor(0, 1); lcd.print("Coba lagi?"); penundaan (250); } lcd.clear(); skor = 0; ballGateServo.write(0); highscoreReached = salah; bola = 3; }

if (skor > highscore dan !highscoreReached) {

lcd.setCursor(0, 0); for (int i = 5; i >= 1; i--) { lcd.clear(); penundaan (250); lcd.print("HARGA TINGGI BARU"); lcd.setCursor(0, 1); lcd.print("Meninggal Mendadak!"); penundaan (250); } lcd.clear(); bola = 1; ballGateServo.write(120); skor tinggi = skor; highscoreReached = benar; }

// Perbarui skor tertinggi jika skor saat ini lebih tinggi

if (skor > highscore) { highscore = skor; }

// Atur kursor ke baris 0

lcd.setCursor(0, 0); // Cetak nilai (tinggi) saat ini ke lcd if (skor <= 0) { lcd.print("Nilai tinggi: " + String(nilai tinggi) + " "); } else { lcd.print("Nilai: " + String(nilai) + " "); }

// Atur kursor ke baris 1

lcd.setCursor(0, 1);

// Cetak jumlah bola saat ini ke lcd

lcd.print("Bola: " + String(bola)); }

Direkomendasikan: