Obstacle Avoiding Robot
merupakan Robot yang mampu menghindari halangan di depannya dan mencari jalan
lain dengan berbelok ke kiri atau ke kanan. Banyak sekali tutorial cara membuat
robot jenis ini, bahkan dengan sensor dan pemrograman sangan kompleks. Pada
kesempatan ini kita akan membagiakan cara membuat Obstacle Avoiding yang
sederhana yang tentunya tidak terlalu sulit dan cukup sederhana.
Berikut adalah part yang
dibutuhkan beserta Link tempat Membelinya secara Online (BL/TP):
- KIT SMART CHASSIS CHASIS 4WD ROBOT
- Module Driver Motor L298N
- Arduino Nano V3
- Socket/tempat Baterai 18650 2P
- Sensor Jarak Ultrasonic
- Servo 9G
- Breadboard/ProjectBoard 400P
- Jumper Cable
- Kabel Pelangi 10P
- Bracket Ultrasonic
Langkah Perakitan :
Pada
penyolderan Motor DC gear Box bisa menggunakan kabel pelangi 10P yang di ambil
dua kabel saja dan panjang yang disesuaikan. Usahakan Warna kabel berbeda untuk
mempermudah pengenalan pin dan polaritas Motor DC nantinya. Penambahan
kapasitor 100nF dapat dilakukan untuk menambah kesetabilan motor.
Perakitan CHASSIS
Langkah-langkah perakitan CHASSIS yaitu dengan memasangkan motor DC gearbox terlebih dahulu dimana didalam paketnya sudah terdapat akrilik pengunci sehingga memudahkan kita untuk pemasangan. Pada saat pemasangan Motor gearbox ini, ban dalam keadaan tidak terpasang (Pemasangan ban dapat dilakukan pada saat terakhir)
Pengkabelan Soket Baterai
Pada bagian baterai tegangan yang kita perlukan adalah lebih dari 7V sehingga kita perlu merakitnya menjadi seri. untuk merakitnya menjadi seri bisa mengikuti wiring seperti gambar berikut ini.
Pembuatan Rangkaian
Untuk robot ini setidaknya kita membutuhkan satu pin PWM untuk servo dan 4 buah pin digital untuk mengatur putaran motor serta 2 buah pin digital untuk sensor ultra sonic, berikut adalah rangkaiannya :
Perogram :
//CNC STORE BANDUNG
#include
#include
#define TRIG_PIN 7
#define ECHO_PIN 6
#define MAX_DISTANCE 50
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
Untuk robot ini setidaknya kita membutuhkan satu pin PWM untuk servo dan 4 buah pin digital untuk mengatur putaran motor serta 2 buah pin digital untuk sensor ultra sonic, berikut adalah rangkaiannya :
Perogram :
//CNC STORE BANDUNG
#include
#include
#define TRIG_PIN 7
#define ECHO_PIN 6
#define MAX_DISTANCE 50
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
Servo myservo;
boolean goesForward=false;
int distance = 100;
int speedSet = 0;
boolean goesForward=false;
int distance = 100;
int speedSet = 0;
const int motorPin1 = 11;
const int motorPin2 = 10;
//Motor B
const int motorPin3 = 9;
const int motorPin4 = 8;
const int motorPin2 = 10;
//Motor B
const int motorPin3 = 9;
const int motorPin4 = 8;
void setup()
{
myservo.attach(5);
myservo.write(90);
delay(1000);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
}
void loop()
myservo.attach(5);
myservo.write(90);
delay(1000);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
}
void loop()
{
int distanceR = 0;
int distanceL = 0;
delay(40);
if(distance<=30)
{
moveStop();
delay(100);
moveBackward();
delay(200);
moveStop();
delay(200);
distanceR = lookRight();
delay(200);
distanceL = lookLeft();
delay(200);
if(distanceR>=distanceL)
{
turnRight();
moveStop();
}
int distanceR = 0;
int distanceL = 0;
delay(40);
if(distance<=30)
{
moveStop();
delay(100);
moveBackward();
delay(200);
moveStop();
delay(200);
distanceR = lookRight();
delay(200);
distanceL = lookLeft();
delay(200);
if(distanceR>=distanceL)
{
turnRight();
moveStop();
}
else
{
turnLeft();
moveStop();
}
}
{
turnLeft();
moveStop();
}
}
else
{
moveForward();
}
distance = readPing();
}
int lookRight()
{
myservo.write(10);
delay(150);
int distance = readPing();
delay(100);
myservo.write(90);
return distance;
}
int lookLeft()
{
myservo.write(170);
delay(150);
int distance = readPing();
delay(100);
myservo.write(90);
return distance;
delay(100);
}
int readPing()
{
moveForward();
}
distance = readPing();
}
int lookRight()
{
myservo.write(10);
delay(150);
int distance = readPing();
delay(100);
myservo.write(90);
return distance;
}
int lookLeft()
{
myservo.write(170);
delay(150);
int distance = readPing();
delay(100);
myservo.write(90);
return distance;
delay(100);
}
int readPing()
{
delay(50);
int cm = sonar.ping_cm();
if(cm==0)
{
cm = 100;
}
return cm;
}
void moveStop()
delay(50);
int cm = sonar.ping_cm();
if(cm==0)
{
cm = 100;
}
return cm;
}
void moveStop()
{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4,LOW);
}
void moveForward()
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4,LOW);
}
void moveForward()
{
digitalWrite (motorPin1, HIGH);
digitalWrite (motorPin2, LOW);
digitalWrite (motorPin3, HIGH);
digitalWrite (motorPin4, LOW);
}
void moveBackward()
digitalWrite (motorPin1, HIGH);
digitalWrite (motorPin2, LOW);
digitalWrite (motorPin3, HIGH);
digitalWrite (motorPin4, LOW);
}
void moveBackward()
{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
}
void turnRight()
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
}
void turnRight()
{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(300);moveForward();
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(300);moveForward();
}
void turnLeft()
{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(300);
moveForward();
}
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(300);
moveForward();
}
Untuk Perogram di atas bisa di Download pada LINK di bawah :
Tidak ada komentar:
Posting Komentar