A. Pendahuluan
Robot avoider merupakan robot otomatis yang berjalan sendiri yang mana akan menghindari
penghalang di depannya ketika mendeteksi suatu benda atau penghalang kemudian mencari jalan
yang tidak ada penghalangnya. Robot avoider biasanya menggunakan sensor Ultrasonik sebagai
unit pendeteksi penghalangnya. Ketika sensor Ultrasonik mendeteksi ada benda maka akan
langsung memerintah mikrokontroler untuk membelok atau menghindari benda tersebut.
B. Dasar Teori
1. Arduino Uno
3. Modul L298N
4. Motor DC Gearbox
D. Prosedur Kerja
A. Perakitan Rangkaian
Alat dan bahan yang sudah disiapkan dan kemudian dirangkaikan sesuai dengan gambar 6.
Peta konfigurasi 3 sensor Ultrasonik dan rangkaian L298N dirakit ke Arduino sesuai dengan
tabel di bawah ini :
Sensor dan Modul Kaki Arduino
Trig 12
Ultrasonik 1
Echo 13
Trig 8
Ultrasonik 2
Echo 9
Trig 3
Ultrasonik 3
Echo 4
IN 1 5
IN 2 6
Motor Driver L298N
IN 3 10
IN 4 11
Tabel 1. Peta Konfigurasi
2. Pembuatan Pemrograman
Untuk pemrograman untuk mengatur sensor Ultrasonik menggunakan library tambahan dan
bisa didownload di GitHub. Program dibuat sesuai dengan listing di bawah ini kemudian
didownloadkan ke Arduino menggunakan Arduino IDE.
#include <Ultrasonic.h>
#define kananmaju 5
#define kananmundur 6
#define kirimaju 10
#define kirimundur 11
long ultraSensor1;
long ultraSensor2;
long ultraSensor3;
void setup()
{
Serial.begin(9600);
pinMode(kananmaju, OUTPUT);
pinMode(kananmundur, OUTPUT);
pinMode(kirimaju, OUTPUT);
pinMode(kirimundur, OUTPUT);
}
void loop()
{
ultraSensor1 = ultrasonic1.Ranging(CM);
ultraSensor2 = ultrasonic2.Ranging(CM);
ultraSensor3 = ultrasonic3.Ranging(CM);
Serial.println("Sensor1");
Serial.println(ultraSensor1);
Serial.println("Sensor2");
Serial.println(ultraSensor2);
Serial.println("Sensor3");
Serial.println(ultraSensor3);
if(ultraSensor1>=15 & ultraSensor2>=15 & ultraSensor3>=15)
{
maju();
}
else if(ultraSensor1>=15 & ultraSensor2>=15 & ultraSensor3<=15)
{
kanan();
}
else if(ultraSensor1>=15 & ultraSensor2<=15 & ultraSensor3<=15)
{
kananP();
}
else if(ultraSensor1<=15 & ultraSensor2>=15 & ultraSensor3>=15)
{
kiri();
}
else if(ultraSensor1<=15 & ultraSensor2<=15 & ultraSensor3>=15)
{
kiriP();
}
else if(ultraSensor1<=15 & ultraSensor2<=15 & ultraSensor3<=15)
{
mundur();
delay(500);
kananP();
delay(350);
}
else if(ultraSensor1>=15 & ultraSensor2<=15 & ultraSensor3>=15)
{
mundur();
delay(350);
putar();
delay(300);
}
}
void maju()
{
analogWrite(kananmaju, 40);
analogWrite(kananmundur, 0);
analogWrite(kirimaju, 40);
analogWrite(kirimundur, 0);
}
void kananP()
{
analogWrite(kananmaju, 0);
analogWrite(kananmundur, 60);
analogWrite(kirimaju, 60);
analogWrite(kirimundur, 0);
}
void kanan()
{
analogWrite(kananmaju, 0);
analogWrite(kananmundur, 0);
analogWrite(kirimaju, 60);
analogWrite(kirimundur, 0);
}
void kiriP()
{
analogWrite(kananmaju, 60);
analogWrite(kananmundur, 0);
analogWrite(kirimaju, 0);
analogWrite(kirimundur, 60);
}
void kiri()
{
analogWrite(kananmaju, 60);
analogWrite(kananmundur, 0);
analogWrite(kirimaju, 0);
analogWrite(kirimundur, 0);
}
void mundur()
{ analogWrite(kananmaju, 0);
analogWrite(kananmundur, 40);
analogWrite(kirimaju, 0);
analogWrite(kirimundur, 40);
}
void setop()
{ analogWrite(kananmaju, 0);
analogWrite(kananmundur, 0);
analogWrite(kirimaju, 0);
analogWrite(kirimundur, 0);
}
void putar()
{
analogWrite(kananmaju, 0);
analogWrite(kananmundur, 80);
analogWrite(kirimaju, 80);
analogWrite(kirimundur, 0);
}