#define kirimaju A1 //Mendeklarasikan pin A0 sebagai pin untuk motor dc
#define kirimundur A2 //Mendeklarasikan pin A1 sebagai pin untuk motor dc
#define kananmaju A3 //Mendeklarasikan pin A2 sebagai pin untuk motor dc
#define kananmundur A4 //Mendeklarasikan pin A3 sebagai pin untuk motor dc
#define trigPin1 9 //mendeklarasikan pin 7 sebagai pin untuk trigger ultrasonik 1
#define echoPin1 8 //mendeklarasikan pin 6 sebagai pin untuk echo ultrasonik 1
#define trigPin2 11 //mendeklarasikan pin 5 sebagai pin untuk trigger ultrasonik 2
#define echoPin2 10 //mendeklarasikan pin 4 sebagai pin untuk echo ultrasonik 1
#define trigPin3 13 //mendeklarasikan pin 3 sebagai pin untuk trigger ultrasonik 3
#define echoPin3 12 //mendeklarasikan pin 2 sebagai pin untuk echo ultrasonik 1
void setup() { //fungsi wajib untuk program arduino
Serial.begin(9600);
pinMode(trigPin1, OUTPUT); //mendeklarasikan trigPin1 sebagai pin output
pinMode(trigPin2, OUTPUT); //mendeklarasikan trigPin2 sebagai pin output
pinMode(trigPin3, OUTPUT); //mendeklarasikan trigPin3 sebagai pin output
pinMode(echoPin1, INPUT); //mendeklarasikan echoPin1 sebagai pin input
pinMode(echoPin2, INPUT); //mendeklarasikan echoPin2 sebagai pin input
pinMode(echoPin3, INPUT); //mendeklarasikan echoPin3 sebagai pin input
pinMode(kirimaju, OUTPUT); //mendeklarasikan pin kirimaju sebagai pin output
pinMode(kirimundur, OUTPUT); //mendeklarasikan pin kirimundur sebagai pin output
pinMode(kananmaju, OUTPUT); //mendeklarasikan pin kananmaju sebagai pin output
pinMode(kananmundur, OUTPUT); //mendeklarasikan pin kananmndur sebagai pin output
}
void loop() {
long duration1, distance1; //memberi tipe data pada variabel
digitalWrite(trigPin1, LOW); //memberi logika 0 atau low pada keluaran trigPin1
delayMicroseconds(2); //memberi waktu delay
digitalWrite(trigPin1, HIGH); //memberi logika 1 atau low pada keluaran trigPin1
delayMicroseconds(10); //memberi waktu delay
digitalWrite(trigPin1, LOW); //memberi logika 0 atau low pada keluaran trigPin1
duration1 = pulseIn(echoPin1, HIGH); //memproses nilai duration1 yang terbaca
distance1 = (duration1/2) / 29.1; //menghitung nilai distance1
Serial.print(distance1);
Serial.print(" || ");
long duration2, distance2; //memberi tipe data pada variabel
digitalWrite(trigPin2, LOW); //memberi logika 0 atau low pada keluaran trigPin2
delayMicroseconds(2); //memberi waktu delay
digitalWrite(trigPin2, HIGH); //memberi logika 1 atau HIGH pada keluaran trigPin2
delayMicroseconds(10); //memberi waktu delay
digitalWrite(trigPin2, LOW); //memberi logika 0 atau low pada keluaran trigPin2
duration2 = pulseIn(echoPin2, HIGH); //memproses nilai duration2 yang terbaca
distance2 = (duration2/2) / 29.1; //menghitung nilai distance2
Serial.print(distance2);
Serial.print(" || ");
long duration3, distance3; //memberi tipe data pada variabel
digitalWrite(trigPin3, LOW); //memberi logika 0 atau low pada keluaran trigPin3
delayMicroseconds(2); //memberi waktu delay
digitalWrite(trigPin3, HIGH); //memberi logika 1 atau HIGH pada keluaran trigPin3
delayMicroseconds(10); //memberi waktu delay
digitalWrite(trigPin3, LOW); //memberi logika 0 atau low pada keluaran trigPin3
duration3 = pulseIn(echoPin3, HIGH); //memproses nilai duration3 yang terbaca
distance3 = (duration3/2) / 29.1; //menghitung nilai distance3
Serial.print(distance3);
Serial.print(" || ");
if (distance1>10 && distance2>10 && distance3>10) //Memberi kondisi
{ //robot bergerak maju
digitalWrite(kirimaju, HIGH); //Memberi logika 1 atau HIGH pada pin kirimaju
digitalWrite(kirimundur, LOW); //Memberi logika 0 atau LOW pada pin kirimundur
digitalWrite(kananmaju, HIGH); //Memberi logika 1 atau HIGH pada pin kanan maju
digitalWrite(kananmundur, LOW); //Memberi logika 0 atau LOW pada pin kananmundur
}
else if (distance1<10 && distance2>10 && distance3>10) //Memberi kondisi
{ //robot bergerak mundur
digitalWrite(kirimaju, LOW); //Memberi logika 0 atau LOW pada pin kirimaju
digitalWrite(kirimundur, HIGH); //Memberi logika 1 atau HIGH pada pin kirimundur
digitalWrite(kananmaju, LOW); //Memberi logika 0 atau LOW pada pin kananmaju
digitalWrite(kananmundur, HIGH); //Memberi logika 1 atau HIGH pada pin kanan mundur
}
else if (distance1>10 && distance2<10 && distance3>10) //Memberi kondisi
{ //robot belok ke kanan
digitalWrite(kirimaju, HIGH); //Memberi logika 1 atau HIGH pada pin kirimaju
digitalWrite(kirimundur, LOW); //Memberi logika 0 atau LOW pada pin kirimundur
digitalWrite(kananmaju, LOW); //Memberi logika 0 atau LOW pada pin kananmaju
digitalWrite(kananmundur, HIGH); //Memberi logika 1 atau HIGH pada pin kananmundur
}
else if (distance1<10 && distance2<10 && distance3>10) //Memberi kondisi
{ //robot belok ke kanan
digitalWrite(kirimaju, HIGH); //Memberi logika 1 atau HIGH pada pin kirimaju
digitalWrite(kirimundur, LOW); //Memberi logika 0 atau LOW pada pin kirimundur
digitalWrite(kananmaju, LOW); //Memberi logika 0 atau LOW pada pin kananmaju
digitalWrite(kananmundur, HIGH); //Memberi logika 1 atau HIGH pada pin kananmundur
}
else if (distance1>10 && distance2>10 && distance3<10) //Memberi kondisi
{ //robot belok ke kiri
digitalWrite(kirimaju, LOW); //Memberi logika 0 atau LOW pada pin kirimaju
digitalWrite(kirimundur, HIGH); //Memberi logika 1 atau HIGH pada pin kirimundur
digitalWrite(kananmaju, HIGH); //Memberi logika 1 atau HIGH pada pin kananmaju
digitalWrite(kananmundur, LOW); //Memberi logika 0 atau LOW pada pin kananmundur
}
else if (distance1<10 && distance2>10 && distance3<10) //Memberi kondisi
{ //robot belok ke kiri
digitalWrite(kirimaju, LOW); //Memberi logika 0 atau LOW pada pin kirimaju
digitalWrite(kirimundur, HIGH); //Memberi logika 1 atau HIGH pada pin kirimundur
digitalWrite(kananmaju, HIGH); //Memberi logika 1 atau HIGH pada pin kananmaju
digitalWrite(kananmundur, LOW); //Memberi logika 0 atau LOW pada pin kananmundur
}
else if (distance1<10 && distance2<10 && distance3<10) //Memberi kondisi
{ //robot bergerak mundur
digitalWrite(kirimaju, LOW); //Memberi logika 0 atau LOW pada pin kirimaju
digitalWrite(kirimundur, HIGH); //Memberi logika 1 atau HIGH pada pin kirimundur
digitalWrite(kananmaju, LOW); //Memberi logika 0 atau LOW pada pin kananmaju
digitalWrite(kananmundur, HIGH); //Memberi logika 1 atau HIGH pada pin kananmundur
}
else //pilihan terakhir jika tidak ada kondisi yang terpenuhi
{ //robot bergerak maju
digitalWrite(kirimaju, HIGH); //Memberi logika 1 atau HIGH pada pin kirimaju
digitalWrite(kirimundur, LOW); //Memberi logika 0 atau LOW pada pin kirimundur
digitalWrite(kananmaju, HIGH); //Memberi logika 1 atau HIGH pada pin kananmaju
digitalWrite(kananmundur, LOW); //Memberi logika 0 atau LOW pada pin kananmundur
}
} //kurung penutup dari program fungsi void loop
Tidak ada komentar:
Posting Komentar