Mobile Robot Bergerak sesuai Posisi Berpengendali Arduino

Pada jejak kali ini akan membuat permainan mobile robot yang bergerak sesuai dengan koordinat yang ditentukan misalkan mobile robot bergerak dari titik 1 ke titik 5 atau bisa juga bergerak dari titik 1 ke titik 6 setelah itu lanjut ke titik yang lain, seperti gambar di bawah ini.

 

Untuk membuat mobile robot dengan pergerakan seperti ini dibutuhkan peralatan utama, diantaranya :

Arduino Uno

Arduino Uno R3

Banyak sekali alat pengendali yang dapat digunakan, tetapi pada jejak kali ini digunakan Arduino Uno R3 karena alat yang dimiliki dan cenderung lebih mudah.

 

Driver L293N

Driver L293N

Driver ini dibutuhkan karena sinyal PWM dari Arduino memiliki tegangan dan kuat arus yang kecil sehingga tidak mampu memutar motor dc, untuk itu dibutuhkan driver sebagai penguat sinyal yang memiliki tegangan dan kuat arus yang lebih besar tetapi memiliki frekuensi atau duty cycle sinyal PWM yang sama.

 

Motor DC

Motor DC

Motor dc mendapat sinyal PWM (Pulse Width Modulation) dengan duty cycle 100%.

 

Rangkaian keseluruhan seperti gambar di bawah ini :

Rangkaian Mobile Robot

 

List Program

const int RF = 3, RR = 4, LF = 5, LR = 6, START = A0;
// RR:RIGHT FORWARD, RR:RIGHT REVERSE, LF:LEFT FORWARD, LR:LEFT REVERSE
int nilaiSTART;
void setup() {
// put your setup code here, to run once:
pinMode(RF, OUTPUT);
pinMode(RR, OUTPUT);
pinMode(LF, OUTPUT);
pinMode(LR, OUTPUT);
pinMode(START, INPUT);
}

void loop() {
// put your main code here, to run repeatedly:
nilaiSTART = digitalRead(START);
if (nilaiSTART == 0) {
// maju
digitalWrite(RF, 1);
digitalWrite(RR, 0);
digitalWrite(LF, 1);
digitalWrite(LR, 0);
delay(5000);
// berhenti
digitalWrite(RF, 0);
digitalWrite(RR, 0);
digitalWrite(LF, 0);
digitalWrite(LR, 0);
delay(2000);

// putar 90 cw
digitalWrite(RF, 0);
digitalWrite(RR, 1);
digitalWrite(LF, 1);
digitalWrite(LR, 0);
delay(2000);
// berhenti
digitalWrite(RF, 0);
digitalWrite(RR, 0);
digitalWrite(LF, 0);
digitalWrite(LR, 0);
delay(2000);

//maju
digitalWrite(RF, 1);
digitalWrite(RR, 0);
digitalWrite(LF, 1);
digitalWrite(LR, 0);
delay(5000);
// berhenti
digitalWrite(RF, 0);
digitalWrite(RR, 0);
digitalWrite(LF, 0);
digitalWrite(LR, 0);
delay(2000);

// putar 90 ccw
digitalWrite(RF, 1);
digitalWrite(RR, 0);
digitalWrite(LF, 0);
digitalWrite(LR, 1);
delay(2000);
// berhenti
digitalWrite(RF, 0);
digitalWrite(RR, 0);
digitalWrite(LF, 0);
digitalWrite(LR, 0);
delay(2000);

// maju
digitalWrite(RF, 1);
digitalWrite(RR, 0);
digitalWrite(LF, 1);
digitalWrite(LR, 0);
delay(2000);
// berhenti
digitalWrite(RF, 0);
digitalWrite(RR, 0);
digitalWrite(LF, 0);
digitalWrite(LR, 0);
delay(2000);

// putar 180 cw
digitalWrite(RF, 0);
digitalWrite(RR, 1);
digitalWrite(LF, 1);
digitalWrite(LR, 0);
delay(4000);
// berhenti
digitalWrite(RF, 0);
digitalWrite(RR, 0);
digitalWrite(LF, 0);
digitalWrite(LR, 0);
delay(2000);

}
}

 

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *