Labirintus Kelereng Arduino – Buat Papan Permainan Karton yang Menyenangkan
Tentang Proyek Ini
Saya akan menunjukkan cara membuat papan permainan Labirintus Kelereng yang dikontrol Arduino yang sangat mudah dan menyenangkan untuk dibuat. Dan bagian terbaiknya adalah terbuat dari karton.
Ide permainan ini adalah menggerakkan kelereng melalui labirin untuk mencapai portal di akhir untuk menang dalam permainan.
Tentu saja ada banyak ide untuk meningkatkan permainan ini dan membuatnya lebih menyenangkan, seperti menambahkan beberapa sensor di akhir, buzzer untuk memainkan nada saat bermain, atau bahkan membuat beberapa lubang di dalam labirin itu sendiri.
Ide
Saya bosan dengan permainan elektronik dan saya mulai mencari tentang permainan keterampilan fisik, jadi saya menemukan Labirintus dan saya menyukainya.
Apa itu Labirintus?
Labirintus adalah permainan keterampilan fisik yang terdiri dari kotak dengan labirin di atasnya dengan lubang, dan kelereng baja. Tujuan permainan adalah mencoba memiringkan bidang permainan untuk memandu kelereng ke akhir labirin, tanpa membiarkannya jatuh ke salah satu lubang. Beberapa versi permainan memiliki permukaan labirin yang tergantung yang berputar pada dua sumbu, masing-masing dikontrol oleh manopel. Versi handheld kecil dari permainan dijual, dengan kotak yang sepenuhnya tertutup dengan sampul transparan di atas. Permainan ini dikembangkan oleh BRIO di Swedia dan pertama kali dirilis di sana pada tahun 1946.
Desain
Saya mulai merancang labirin Labirintus saya sendiri menggunakan Sketch Up Pro untuk membayangkan bagaimana permainan ini akan terlihat. Dan saya berhati-hati untuk memberikan ukuran yang sesuai dan membuatnya cukup mudah karena anak-anak mungkin mulai membuat labirin mereka sendiri.
File desain tersedia untuk diunduh untuk membuat permainan Anda sendiri dari karton hanya dalam 1 jam.
Alat & Bahan
- Karton 3mm
- Lem panas
- Pisau teras tajam
- Penggaris
- Pensil
Komponen
- Arduino (tipe papan apa pun)
- Mini breadboard
- Kabel jumper
- 2X servo motor 9g
- Modul joystick
- 2 baut & dadu 12mm x 3mm
Potong Bentuk
1. Potong satu persegi 20 cm x 20 cm untuk dasar labirin.
2. Potong dua trapesium samakaki 14 cm x 16 cm untuk sisi labirin.
3. Buat lubang persegi panjang di salah satu dari dua potongan ini untuk servo motor (sumbu X).
4. Buat lubang 3mm di potongan lain di tengah tepat untuk bertemu dengan poros servo di sisi lain (sumbu X).
5. Selanjutnya Anda perlu memotong empat persegi panjang 14 cm x 4 cm untuk dukungan di dalam labirin.
6. Buat lubang 3mm di potongan lain di tengah tepat untuk bertemu dengan poros servo di sisi lain (sumbu Y).
7. Buat lubang persegi panjang di tengah seperti yang ditunjukkan di salah satu dari empat potongan ini untuk servomotor (sumbu Y).
8. Pilih labirin Anda sendiri dari file yang dilampirkan dalam artikel, lalu potong persegi 12 cm x 12 cm untuk labirin.
9. Tip* Tempelkan labirin kertas sebagai panduan untuk Anda.
10. Anda perlu memotong setidaknya delapan persegi panjang 1.5 cm x 12 cm untuk dinding di labirin Anda. Selanjutnya Anda perlu memotongnya sehingga ukurannya tepat dan dapat muat di labirin Anda.
11. Ikuti garis panduan lalu tempelkan potongan pada tempatnya untuk menjadi dinding labirin.
12. Tempelkan servo motor pada tempatnya seperti yang ditunjukkan.
13. Tempelkan horn servo motor pada potongan persegi panjang.
Kabeling
Sambungkan kabel dari servo dan joystick seperti yang ditunjukkan:
- Pin Arduino 8 ke kabel kuning servo 1 (sumbu X)
- Pin Arduino 9 ke kabel kuning servo 1 (sumbu Y)
- Kabel merah & cokelat ke breadboard.
- Pin Arduino A0 ke pin Joystick VRx
- Pin Arduino A1 ke pin Joystick VRy
- Joystick VCC dan GND ke breadboard.
- Arduino 5V dan GND ke breadboard.
Kode
Hubungkan papan Arduino Anda ke PC menggunakan kabel USB.
Buka Arduino IDE
Salin dan tempelkan kode ke skets baru
Pastikan nama port serial dengan mengklik menu Tools > board > pilih port serial aktif
Klik tombol lingkaran di atas untuk mengunggah kode.
Setelah Anda menerima pesan selesai, Anda siap melanjutkan.
Kode
#include <Servo.h>
Servo myServoX; // servo untuk sumbu X
Servo myServoY; // servo untuk sumbu Y
int ServoXPin = 8; // pin sumbu X
int ServoYPin = 9; // pin sumbu Y
int ServoXHomePos = 90; // posisi awal servo
int ServoYHomePos = 90;
int ServoXPos = 103;
int ServoYPos = 135;
int XAxlePin = A0; // pin kontrol sumbu X joystick A0
int YAxlePin = A1; // pin kontrol sumbu Y joystick A1
int XAxleValue = 0; // nilai awal joystick
int YAxleValue = 0;
int Direction = 0;
int range = 12; // rentang output gerakan X atau Y
int center = range / 2; // nilai istirahat
int threshold = range / 4; // ambang batas istirahat
void setup() {
myServoX.attach(ServoXPin);
myServoY.attach(ServoYPin);
ServoXPos = ServoXHomePos;
ServoYPos = ServoYHomePos;
myServoX.write(ServoXPos);
myServoY.write(ServoYPos);
Serial.begin(9600);
}
void loop() {
XAxleValue = readAxis(XAxlePin);
YAxleValue = readAxis(YAxlePin);
Serial.print(XAxleValue, DEC);
Serial.print(" - ");
Serial.println(YAxleValue, DEC);
if (XAxleValue > 0) {
ServoXPos++;
myServoX.write(ServoXPos);
delay(100 * (7 - XAxleValue));
}
if (XAxleValue < 0) {
ServoXPos--;
myServoX.write(ServoXPos);
delay(100 * (7 + XAxleValue));
}
if (YAxleValue > 0) {
ServoYPos++;
myServoY.write(ServoYPos);
delay(100 * (7 - YAxleValue));
}
if (YAxleValue < 0) {
ServoYPos--;
myServoY.write(ServoYPos);
delay(100 * (7 + YAxleValue));
}
if (ServoXPos > ServoXHomePos + 20) ServoXPos = ServoXHomePos + 20;
if (ServoXPos < ServoXHomePos - 20) ServoXPos = ServoXHomePos - 20;
if (ServoYPos > ServoYHomePos + 20) ServoYPos = ServoYHomePos + 20;
if (ServoYPos < ServoYHomePos - 20) ServoYPos = ServoYHomePos - 20;
delay(10);
}
int readAxis(int thisAxis) {
int reading = analogRead(thisAxis);
reading = map(reading, 0, 1023, 0, range);
int distance = reading - center;
if (abs(distance) < threshold) distance = 0;
return distance;
}