Laser Shooting Game - Single Player 🔫
Perkenalan
Seberapa bagus dan stabil tangan teman-teman?
Kita akan membuat permainan menembak laser untuk melatih kestabilan tangan kita dan juga untuk seru-seruan dikala gabut.
Permainan ini akan menggunakan sensor LDR untuk mendeteksi cahaya laser yang kita tembakkan. Kemudian menggunakan Servo Motor untuk menggerakkan sensor LDR nya ke posisi acak ketika kita berhasil mengenainya.
Untuk mencatat skor nya, kita akan menggunakan Modul LED. Kita akan mencatat waktu tercepat yang bisa teman-teman capai untuk memadamkan lampu merah yang berkedip pada Modul LED.
Semakin cepat lampu merah dipadamkan, semakin stabil dan jago tangan kita menembakkan laser.
Alat dan Komponen yang diperlukan
- Alat 🛠
- Komponen Yang Dibutuhkan 🔑
- Obeng Plus
- Laser Pointer
- 1 x Arduino Nano
- 1 x Kabel USB Arduino Nano
- 1 x Komputer/Laptop
- 1 x Servo
- 1 X Lengan Robot
- 1 x Sensor LDR
- 1 x Modul LED
- 1 x Kotak Baterai 2 Slot
- 2 x Baterai
- Baut seperlunya
- Kabel Jumper seperlunya
Petunjuk Merakit
◼️ Merakit Komponen Utama
▪️ Memasang Kotak Baterai
Siapkan komponen pertama, yakni rangka utama.
Kemudian siapkan kotak baterai seperti ditunjukkan oleh gambar di bawah.
Perhatikan bahwa terdapat dua buah lubang pada kotak baterai seperti yang ditunjukkan oleh tanda panah putih nomor satu dan dua.
Lubang pada kotak baterai tersebut sejajar dengan lubang pada rangka utama seperti yang ditunjukkan oleh tanda panah hitam nomor satu dan dua.
Lubang tersebut akan dijadikan sebagai lubang untuk memasang baut. Contoh baut yang telah terpasang ditunjukkan seperti pada gambar di bawah ini
Baik, sekarang kotak baterai telah terpasang, hasilnya akan seperti pada gambar di bawah ini.
Selanjutnya kita akan memasang baterai pada kotak baterai.
▪️ Memasang Baterai
Setelah kotak baterai terpasang, kita akan memasang baterai. Siapkan dua buah baterai seperti pada gambar di bawah ini.
Masukkan baterai ke kotak baterai. Perhatikan, kutub negatif baterai yang ditandai oleh tanda negatif ➖, masuk terlebih dahulu ke pegas pada kotak baterai.
Hasilnya akan seperti pada gambar di bawah ini.
Selanjutnya kita akan memasang baterai berikutnya.
Sama seperti langkah 7 di atas sebelumnya, masukkan baterai ke kotak baterai dengan kutub negatif baterai yang ditandai oleh tanda negatif ➖, masuk terlebih dahulu ke pegas pada kotak baterai.
Hasilnya akan seperti pada gambar di bawah ini.
Setelah kedua baterai terpasang pada kotak baterai, hasilnya akan menjadi seperti di bawah ini.
▪️ Memasang Arduino Nano
Selanjutnya kita akan memasang Arduino Nano ke rangka utama. Siapkan 4 buah spacer kertas dan Arduino Nano.
Bukalah baut pada keempat spacer kertas tersebut, kemudian pasangkan ke lubang baut pada Arduino Nano.
Setelah keempat spacer kertas terpasang pada Arduino Nano, akan menjadi seperti ini.
Setelah keempat spacer kertas terpasang pada Arduino Nano, selanjutnya kita akan memasang Arduino Nano ke rangka utama. Namun sebelumnya, perhatikan terlebih dahulu lubang-lubang yang ditunjukkan oleh tanda panah putih pada gambar di bawah ini.
Kita akan menancapkan keempat kaki spacer kertas pada keempat lubang tersebut.
Tancapkan kaki spacer bagian depan Arduino Nano pada lubang. Setelah sejajar dengan lubang, tekan hingga masuk sepenuhnya.
Lakukan hal yang sama untuk dua kaki yang tersisa di belakangnya.
Apabila Arduino Nano telah terpasang pada rangka utama, maka hasilnya akan seperti pada gambar di bawah ini
▪️ Memasang Modul LED
Selanjutnya kita akan memasang Modul LED yang akan kita gunakan untuk mencatat jumlah tembakan yang tepat sasaran. Siapkan Modul LED dan Komponen Dudukan Motor seperti yang ditunjukkan oleh gambar di bawah ini.
Kemudian sejajarkan lubang 1 dan lubang 2 Modul LED dengan lubang 1 dan lubang 2 Dudukan Motor seperti yang ditunjuk oleh gambar di bawah ini.
Selanjutnya kita akan mengencangkan Modul LED pada Dudukan Motor dengan menggunakan dua buah baut. Kita akan memasang dua buah baut pada dua lubang yang sejajar tadi. Hasilnya akan seperti pada gambar di bawah ini. Dua buah baut telah terpasang pada lubang Modul LED dan Dudukan Motor.
Setelah kita mengencangkan Modul LED pada Dudukn Motor, kita akan memasang keduanya pada rangka utama. Pasanglah dengan posisi seperti yang ditunjukkan oleh gambar di bawah.
Maka hasil akhirnya akan seperti pada gambar di bawah ini.
▪️ Memasang Servo
Selanjutnya kita akan memasang Servo pada Dudukan Motor. Siapkan Servo Motor seperti ditunjukkan oleh gambar di bawah.
Kemudian siapkan Dudukan Motor, sejajarkan lubang 1 dan lubang 2 pada Servo dengan lubang 1 dan lubang 2 Dudukan Motor. Kencangkan dua lubang tersebut dengan dua buah baut.
Maka hasilnya akan seperti pada gambar di bawah ini.
Selanjutnya kita akan memasangnya ke rangka utama. Pasanglah dengan posisi seperti pada gambar di bawah ini.
Setelah terpasang pada rangka utama, maka hasil akhirnya akan seperti pada gambar di bawah ini.
▪️ Memasang Sensor LDR
Langkah selanjutnya, kita akan memasang Sensor LDR pada Lengan Robot. Siapkan komponen seperti pada gambar di bawah ini.
Selanjutnya, perhatikan baik-baik posisi lengan robot pada gambar di bawah ini. Sejajarkan lubang pada Sensor LDR ke lubang paling ujung pada lengan robot.
Kemudian kencangkan dengan satu buah baut seperti pada gambar di bawah ini.Setelah terpasang, kita akan mengencangkan lengan robot dengan baut kecil pada lubang seperti yang ditunjuk oleh tanda panah di bawah.
Berikut hasilnya setelah baut kecil terpasang.Langkah terakhir, kita akan memasang papan target pada Sensor LDR. Pasang dengan posisi seperti yang ditunjuk oleh gambar di bawah ini.
Berikut hasilnya setelah papan target terpasang.Setelah semua komponen terpasang, hasil finalnya akan seperti pada gambar di bawah ini.
◼️ Wiring Diagram
Jika sudah selesai memasang semua komponen ke rangka utama, selanjutnya kita akan merangkai dan menghubungkan komponen tersebut dengan kabel jumper.
▪️ Diagram Gambar
Teman-teman bisa gunakan gambar Wiring Diagram di bawah ini sebagai petunjuk untuk merangkai kabel-kabelnya.
▪️ Diagram Tabel
Apabila titik ujung kabel pada gambar di atas kurang jelas, teman-teman bisa gunakan tabel di bawah ini.
Modul Servo | LDR Sensor | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
LED Module | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Mengetik Program
Kemudian ketik program di bawah ini. Setelah selesai mengetik, jalankan proses Verify. Setelah proses verify dan compiling selesai, upload programnya ke Arduino Nano.
#include<Servo.h>
#include <Ultrasonic.h>
Ultrasonic ultrasonic(4, 5);
int distance;
int number=0;
int randomdelay=0;
Servo servo1;
Servo servo2;
Servo servo3;
// Variables will change:
int moveState = 0; // current state of the move
int lastMoveState = 0; // previous state of the move
void setup() {
// initialize the LED as an output:
pinMode(13, OUTPUT);
// initialize serial communication:
Serial.begin(9600);
servo1.attach(9);
servo2.attach(10);
servo3.attach(11);
//initialize starting servo sequence
servo1.write(0);
servo2.write(0);
servo3.write(0);
delay(300);
servo1.write(90);
delay(300);
servo2.write(90);
delay(300);
servo3.write(90);
delay(500);
servo3.write(0);
delay(150);
servo2.write(0);
delay(150);
servo1.write(0);
delay(150);
servo1.write(90);
servo2.write(90);
servo3.write(90);
delay(300);
servo1.write(0);
servo2.write(0);
servo3.write(0);
}
void loop() {
delay(100); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
Serial.print("Jarak: ");
distance = ultrasonic.read();
Serial.print(distance);
Serial.println("cm");
if (distance<=15){
moveState=LOW;
}
else if(distance>=15){
moveState=HIGH;
}
// compare the moveState to its previous state
if (moveState != lastMoveState) {
// if the state has changed, do the robot move
if (moveState == HIGH) {
digitalWrite(13,LOW);
servo1.write(0);
servo2.write(0);
servo3.write(0);
} else {
number = random(3);
Serial.println(number);
digitalWrite(13,HIGH);
if(number==0)
{
servo1.write(0);
servo2.write(90);
servo3.write(0);
delay(2000);
}
else if(number==1)
{
servo1.write(0);
servo2.write(0);
servo3.write(90);
delay(2000);
}
else if(number==2)
{
servo1.write(90);
servo2.write(0);
servo3.write(0);
delay(2000);
}
}
// Delay a little bit to avoid bouncing
delay(50);
}
// save the current state as the last state, for next time through the loop
lastMoveState = moveState;
}