Membuat robot line follower dengan avoider ( Line Following Robot With Obstacle Avoidance)

MEMBUAT ROBOT LINE FOLLOWER DENGAN AVOIDER 


Saya sudah pernah membuat robot line follower dan robot avoider,kali ini saya akan membuat robot gabungan line follower dan avoider.
Oke langsung saja tanpa basa basi.
Siapkan alat dan bahan ;
1.motor dc x4
2.sensor ultrasonic x1 
3.sensor ir x2
4.battray dc 9v x2
5.Arduino nano x1
6.Motor driver L296N X1
7.kabel jumper secukupnya
8.roda ban motor dc x4

Langsung saja ke rangkaiannya


BACA JUGA: Membuat Line Follower Dengan Arduino (Line Follower Using Arduino)

Rangkaian:




1.Hubungkan pin 5v arduino ke pin vcc ultrasonic,vcc sensor ir 1 dan vcc sensor ir 2.
2.Hubungkan pin ground arduino ke pin ground ultrasonic,pin ground sensor ir 1dan sensor ir 2.
3.Hubungkan pin D9 arduino ke pin out sensor ir 1.
4.Hubungkan pin D10 arduino ke pin out sensor ir 2.
5.Hubungkan pin D11 arduino ke pin echo ultrasonic.
6.Hubungkan pin D12 arduino ke pin trig ultrasonic.


7.Hubungkan pin + battray ke pin 12 v arduino.
8.Hubungkan pin – battray ke pin ground arduino.
9.Hubungkan pin D3 arduino ke pin motorA1 driver motor.
10.Hubungkan pin D4 arduino ke motorA2 driver motor.
11.Hubungkan pin D5 arduino ke pin motor A speed driver motor.
12.Hubungkan pin D7 arduino ke pin motor B1 driver motor.
13.Hubungkan pin D8 arduino ke pin motor B2 driver motor.
14.Hubungkan pin D6 arduino ke pin motor B speed driver motor.
15.Hubungkan pin out 1 driver motor  ke motor 1 dan diserikan ke motor 2
16.Hubungkan pin out 2 driver motor ke motor 1 dan diserikan ke motor 2.
17.Hubungkan pin out 3 driver motor  ke motor 3 dan serikan ke motor 4.
18.Hubungkan pin out 4 driver motor ke pin motor 3 dan serikan motor 4.
19.jika putaran motor berlawanan ada yang ke depan da nada yang ke belakang sesuaikan lah putaran motor bersamaan.


BACA JUGA:  


20.rangkaian diatas adalah rangkaian keseluruhan dari atas, dan untuk bodi buat lah sesuai keinginan anda.

masukan source code dibawah ke arduino IDE.



/*
 * by faisal manurung
 * Project: Line following robot with obstacle avoidance
 */
  int vSpeed = 110;                      
  int turn_speed = 230;       // 0 - 255  max
  int t_p_speed = 125;
  int stop_distance = 12;
  int turn_delay = 10;


//HC-SR04 Sensor connection
  const int trigPin = 11;
  const int echoPin = 12;

//L293 Connection   
  const int motorA1      = 3;  
  const int motorA2      = 4; 
  const int motorAspeed  = 5;
  const int motorB1      = 7; 
  const int motorB2      = 8; 
  const int motorBspeed  =6;

//Sensor Connection
  const int left_sensor_pin =9;
  const int right_sensor_pin =10;

  
  int turnspeed;
  int left_sensor_state;
  int right_sensor_state;

  long duration;
  int distance;

void setup() {
  pinMode(motorA1, OUTPUT);
  pinMode(motorA2, OUTPUT);
  pinMode(motorB1, OUTPUT);
  pinMode(motorB2, OUTPUT);

  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
    
  Serial.begin(9600);

  delay(3000);                              
  
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance= duration*0.034/2;
  Serial.print("Distance: ");
  Serial.println(distance);


left_sensor_state = digitalRead(left_sensor_pin);
right_sensor_state = digitalRead(right_sensor_pin);



if(right_sensor_state == HIGH && left_sensor_state == LOW)
{
  Serial.println("turning right");

  digitalWrite (motorA1,LOW);
  digitalWrite(motorA2,HIGH);                       
  digitalWrite (motorB1,LOW);
  digitalWrite(motorB2,HIGH);

  analogWrite (motorAspeed, vSpeed);
  analogWrite (motorBspeed, turn_speed);
  
  }
if(right_sensor_state == LOW && left_sensor_state == HIGH)
{
  Serial.println("turning left");
  
  digitalWrite (motorA1,HIGH);
  digitalWrite(motorA2,LOW);                       
  digitalWrite (motorB1,HIGH);
  digitalWrite(motorB2,LOW);

  analogWrite (motorAspeed, turn_speed);
  analogWrite (motorBspeed, vSpeed);

  delay(turn_delay);
  }

if(right_sensor_state == LOW && left_sensor_state == LOW)
{
  Serial.println("going forward");

  digitalWrite (motorA1,LOW);
  digitalWrite(motorA2,HIGH);                       
  digitalWrite (motorB1,HIGH);
  digitalWrite(motorB2,LOW);

  analogWrite (motorAspeed, vSpeed);
  analogWrite (motorBspeed, vSpeed);

  delay(turn_delay);
  
  }

if(right_sensor_state == HIGH && left_sensor_state == HIGH)
  Serial.println("stop");
  
  analogWrite (motorAspeed, 0);
  analogWrite (motorBspeed, 0);
  while(true){
  
 }
  }

 if(distance < stop_distance)
 {

  digitalWrite (motorA1,HIGH);
  digitalWrite(motorA2,LOW);                       
  digitalWrite (motorB1,LOW);
  digitalWrite(motorB2,HIGH);
  delay(250);
  analogWrite (motorAspeed, 0);
  analogWrite (motorBspeed, 0);
  delay(500);
  digitalWrite (motorA1,HIGH);
  digitalWrite(motorA2,LOW);                       
  digitalWrite (motorB1,HIGH);
  digitalWrite(motorB2,LOW);

  analogWrite (motorAspeed, t_p_speed);
  analogWrite (motorBspeed, t_p_speed);
  delay(900);


  digitalWrite (motorA1,LOW);
  digitalWrite(motorA2,HIGH);                       
  digitalWrite (motorB1,HIGH);
  digitalWrite(motorB2,LOW);

  analogWrite (motorAspeed, t_p_speed);
  analogWrite (motorBspeed, t_p_speed);
  delay(800);

  digitalWrite (motorA1,LOW);
  digitalWrite(motorA2,HIGH);                       
  digitalWrite (motorB1,LOW);
  digitalWrite(motorB2,HIGH);
  delay(900);

  digitalWrite (motorA1,LOW);
  digitalWrite(motorA2,HIGH);                       
  digitalWrite (motorB1,HIGH);
  digitalWrite(motorB2,LOW);

  delay(700);

   digitalWrite (motorA1,LOW);
  digitalWrite(motorA2,HIGH);                       
  digitalWrite (motorB1,LOW);
  digitalWrite(motorB2,HIGH);
  delay(650);

  digitalWrite (motorA1,LOW);
  digitalWrite(motorA2,HIGH);                       
  digitalWrite (motorB1,HIGH);
  digitalWrite(motorB2,LOW);

  left_sensor_state == HIGH;

  while(left_sensor_state == LOW){

  left_sensor_state = digitalRead(left_sensor_pin);
  right_sensor_state = digitalRead(right_sensor_pin);
  Serial.println("in the first while");
  
}

  digitalWrite (motorA1,HIGH);
  digitalWrite(motorA2,LOW);                       
  digitalWrite (motorB1,LOW);
  digitalWrite(motorB2,HIGH);
  delay(100);
  
  digitalWrite (motorA1,HIGH);
  digitalWrite(motorA2,LOW);                       
  digitalWrite (motorB1,HIGH);
  digitalWrite(motorB2,LOW);
  delay (500);

  }
}








FAISAL MANURUNG
FAISAL MANURUNG Saya anak kelima dari 4 bersaudara. Saya tidak pernah di manjahkan dan saya di kuliahkan di aceh

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel