Rabu, 08 Januari 2020

program robot 3 sensor untrasonik

#include <NewPing.h>
#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