Home / Tutorial Arduino / Cara Membuat Robot Line Follower Arduino Tipe 2

Cara Membuat Robot Line Follower Arduino Tipe 2

kelas-fisika.com – Cara Membuat Robot Line Follower Arduino Tipe 2

kelas-fisika kali ini akan membahas cara membuat robot line follower Arduino dengan menggunakan motor shield dan Phantom Chassis jika tidak ada anda bisa menggantinya dengan chasis robotik yang ada di pasaran .

Alat dan Bahan yang anda perlu siapkan :

  • Arduino UNO  – 1 buah.
  • Basic FTDI Programmer – 1 Buah.
  • Motor Shield – 1 buah
  • Chassis – 1 Buah.
  • Digital + Analog IR sensor – 2 buah.
  • 3 LED  – 1 buah.
  • BO Motor – 2 Buah.
  • Tyres – 2 buah.
  • 6XAA Battery Holder – 1 buah. atau anda bisa gunakan baterai 9 V.
  • USB Cable – 1 Buah.
  • Male to Female Jumper Wire – 10 Buah.
  • Nut Bolt Spacers – 1 Set

1. Pendahuluan:

Anda mungkin perlu tutorial ini untuk merakit robot ini. Sementara Anda mengumpulkan sasis. Tandai Nama pada kabel sehingga Anda dapat mengidentifikasi mereka setelah terkumpul.

1.2 Motor Shield

saat ini banyak dipasaran dijual motor shield Arduino yang kompatibel yang bisa menjalankan 2 servo dan 2 stepper atau 4 motor DC. Shield ini menggunakan register geser IC. Data diberikan dalam mode serial yang dikonversi menjadi paralel dengan register geser IC ini. Koneksi adalah sebagai berikut.

Board to Shift Register-

Pin Digital 8 – Pin Data
Pin Digital 12 – Pin Latch
Pin Digital 4 – Pin Jam
Digital Pin 7 – Pin Enable

Shift Register to Motors-

Q0 – M3 A
Q1 – M2 A
Q2 – M1 A
Q3 – M1 B
Q4 – M2 B
Q5 – M4 A
Q6 – M3 B
Q7 – M4 B

2. Assembly dan Koneksi

Setelah merakit robot buat koneksi seperti yang diberikan pada diagram berikut. Power Jumper pada perisai motor bekerja sebagai Switch to motor maka akan berguna saat melakukan debugging.

2.1 Assembly

Setelah merakit robot akan terlihat seperti –

2.2 Menguji koneksi motor

Sulit untuk menemukan GND dan terminal suplai positif motor. Transfer kode berikut ke papan Arduino. Robot harus bergerak ke arah depan, jika tidak melakukannya, ganti kabel dari motor. misalnya Misalkan motor kiri berputar di arah belakang bangsal dan motor kanan berputar ke arah depan maka Anda harus mengganti kabel terminal M3.

//Robot Line follower Tutorial
// This codes runs robo int the forward direction.

// Shield Pins Declaration 
int dataPin = 8;        
int latchPin = 12;
int clockPin = 4;
int en = 7;
void setup()
{
    pinMode(dataPin, OUTPUT);     // Setting up the motor shield. 
    pinMode(latchPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(en, OUTPUT);    
    digitalWrite(en, LOW); 
 
 forward(); // This funtion for forward robot motion
 
  
 }

void loop()
{
}

void forward(void){
        digitalWrite(latchPin, LOW);            
        shiftOut(dataPin, clockPin, LSBFIRST, 3);
        digitalWrite(latchPin, HIGH);  

}

void backward(void){
        digitalWrite(latchPin, LOW);            
        shiftOut(dataPin, clockPin, LSBFIRST, 164);
        digitalWrite(latchPin, HIGH);  
}

void turn_left(void){
        digitalWrite(latchPin, LOW);            
        shiftOut(dataPin, clockPin, LSBFIRST, 161);
        digitalWrite(latchPin, HIGH);  
}

void turn_right(void){
        digitalWrite(latchPin, LOW);            
        shiftOut(dataPin, clockPin, LSBFIRST, 38);
        digitalWrite(latchPin, HIGH);  
}

void halt(void){
        digitalWrite(latchPin, LOW);            
        shiftOut(dataPin, clockPin, LSBFIRST, 32);
        digitalWrite(latchPin, HIGH);  
}

2.2 Pemrograman Line Follower

Sampai langkah di atas Anda telah membuat semua koneksi dan motor Anda terhubung ke terminal yang benar. Program berikut adalah program berikut. Ini telah mengikuti fungsi yang telah ditentukan untuk gerak robot-

1. forward(): gerak maju robot.

2. backward(): gerakan mundur robot.

3. turn_left(): untuk belok kiri.

4. turn_right(): untuk berbelok ke kanan.

5. halt(): untuk menghentikan robot.

// Robot Line Follower Tutorial.

// declaring Shield
int dataPin = 8;        
int latchPin = 12;
int clockPin = 4;
int en = 7;
// declaring Sensor Pins.
int LeftSensor = A1;
int RightSensor = A0; 
int L_sensor_val = 0; // To store value from sensors. 
int R_sensor_val = 0; 

int threshold = 300; // Threshold value to distinguish black and white. 

void setup()
{   // setting up shield. 
    pinMode(dataPin, OUTPUT);      
    pinMode(latchPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(en, OUTPUT);    
    digitalWrite(en, LOW);   

}

void loop()
{
L_sensor_val =  analogRead(LeftSensor);   // Reading Left sensor data
R_sensor_val =  analogRead(RightSensor);  // Reading Right sensor data


  if(L_sensor_valthreshold) {  // testing for left turn
    while (L_sensor_valthreshold){
      turn_right();  
      L_sensor_val =  analogRead(LeftSensor);
      R_sensor_val =  analogRead(RightSensor);
    }
  }
  else if(L_sensor_val>threshold && R_sensor_val<threshold){  // tesing for right turn
    while (L_sensor_val>threshold && R_sensor_val<threshold){
      turn_left();
      L_sensor_val =  analogRead(LeftSensor);
      R_sensor_val =  analogRead(RightSensor);
    }
 }
forward(); // Default movement is forward.
}

void forward(void){  // function for forward movement. 
        digitalWrite(latchPin, LOW);            
        shiftOut(dataPin, clockPin, LSBFIRST, 3);
        digitalWrite(latchPin, HIGH);  

}

void backward(void){   // function for forward movement. 
        digitalWrite(latchPin, LOW);            
        shiftOut(dataPin, clockPin, LSBFIRST, 164);
        digitalWrite(latchPin, HIGH);  
}

void turn_left(void){   // function for left turn. 
        digitalWrite(latchPin, LOW);            
        shiftOut(dataPin, clockPin, LSBFIRST, 161);
        digitalWrite(latchPin, HIGH);  
}

void turn_right(void){   // function for Right turn. 
        digitalWrite(latchPin, LOW);            
        shiftOut(dataPin, clockPin, LSBFIRST, 38);
        digitalWrite(latchPin, HIGH);  
}

void halt(void){        // function for stopping robot. 
        digitalWrite(latchPin, LOW);             
        shiftOut(dataPin, clockPin, LSBFIRST, 32);
        digitalWrite(latchPin, HIGH);  
}

Setelah Anda mentransfer kode ini ke dewan Arduino. Robot Anda siap mengikuti jalur. Letakkan robot pada garis putih dengan ketebalan 25 – 30 mm. Bagian belakangnya berwarna hitam.

Selamat Mencoba!

Check Also

Tutorial modul Sensor LDR 3 kaki , 2 LED dan Buzzer menggunakan Arduino

kelas-fisika.com – Tutorial modul Sensor LDR 3 kaki , 2 LED dan Buzzer menggunakan Arduino …

Tinggalkan Balasan

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

Powered by themekiller.com