• MUHILHAM • Electronics Hobbyist and Maker
  • Shop
  • Sitemap
  • Portfolio
  • Jasa Custom Project





  • Home Arduino Elektronika Robotic Light Follower Robot Arduino Dengan LDR

    Light Follower Robot Arduino Dengan LDR

    MUHAMMAD ILHAM Penulis MUHAMMAD ILHAM

    Waktu itu dapat pesanan project robot sederhana dari guru salah satu sekolah smk untuk bahan pembelajaran katanya, nah robot tersebut akan yang akan di bahas kali ini, jadi robot itu adalah light follower robot atau robot pengikut cahaya, robot ini merupakan robot yang berjenis mobile robot atau robot dengan menggunakan roda.

    Light follower robot ini tidak jauh beda dengan robot line follower hanya saja perbedaannya jika line follower mengikuti track garis lain halnya dengan robot light follower ini mengkuti cahaya, artinya robot akan berjalan jika diberi cahaya pada sensor, dimana robot akan berjalan  ke arah sesuai dengan sensor mana yang terkena cahaya.

    Sensor yang digunakan yaitu sensor LDR (light dependent resistor) pada robot ini menggunakan 3 sensor LDR yang dipasang di depan robot dengan menghadap depan robot, samping kanan robot dan samping kiri robot, sebagai pengendali pergerakan robot dan pemeroses siyal sensor digunakan arduino sebagai mikrokontroler robot ini.

    Komponen yang dibutuhkan 
    • 1x Arduino Uno
    • 2x Motor DC
    • 1x Driver Motor H-Bridge L298N
    • 3x LDR (light dependent resistor)
    • 3x Resistor 10k
    • 1x Switch ON/OFF
    • 1x Baterai 9V (di video menggunakan 4x baterai AA)
    • Kabel secukupnya
    • Chasis robot (robot ini menggunakan acrylic)
    • Spacer
    Rangkaian/wiring robot
    Jika arah putaran motor tidak sesuai, balik kabel motor yang terhubung dengan output driver motor, untuk baterai bisa menggunakan baterai 9V atau 12V.


    👉 UNTUK PEMESANAN ATAU CUSTOM PROJECT 👈



    Program/coding arduino langsung copy ke software arduino dan upload ke arduino


    /**************************
      light follower robot v2
      www.muhilham.com
      08/01/2020
    ***********************/
    
    #define pin_MOTOR_DIRL 2
    #define pin_MOTOR_PWML 3
    #define pin_MOTOR_DIRR 4
    #define pin_MOTOR_PWMR 5
    
    #define Kec_Min -170
    #define Kec_Max  220 // Max = 255
    
    const int8_t pinSensor[3] = {A0, A1, A2}; // array pin sensor
    int16_t limitSensor[3]; // array limit sensor
    int16_t correction = 100; // nilai koreksi kalibrasi sensor
    
    void setup() {
      Serial.begin(9600);
      pinMode(pin_MOTOR_DIRL, OUTPUT);
      pinMode(pin_MOTOR_PWML, OUTPUT);
      pinMode(pin_MOTOR_DIRR, OUTPUT);
      pinMode(pin_MOTOR_PWMR, OUTPUT);
    
      for (byte i = 0; i < 3; i++) { // kalibrasi sensor
        pinMode(pinSensor[i], INPUT);
        limitSensor[i] = analogRead(pinSensor[i]) + correction;
        if (limitSensor[i] > 1023) limitSensor[i] = 1023;
        delay(50);
      }
    }
    
    void loop() {
      Serial.print("|");
      Serial.print(limitSensor[0]);
      Serial.print("|");
      Serial.print(limitSensor[1]);
      Serial.print("|");
      Serial.print(limitSensor[2]);
      Serial.print("| |");
    
      Serial.print(analogRead(pinSensor[0]));
      Serial.print("|");
      Serial.print(analogRead(pinSensor[1]));
      Serial.print("|");
      Serial.print(analogRead(pinSensor[2]));
      Serial.print("| |");
    
      followLight();
    }
    
    void followLight() {
      int16_t sensor = BacaSensor();
    
      switch (sensor) {
        case 0b000 : driveMotor(0, 0); Serial.println("|  Stop"); break;        // Belok kiri
        case 0b001 : driveMotor(Kec_Max, Kec_Max / 2); Serial.println("|  Belok Kanan"); break;       // Belok kanan
        case 0b011 : driveMotor(Kec_Max / 2, Kec_Max / 3); Serial.println("|  Serong Kanan"); break;  // Serong kanan
        case 0b010 : driveMotor(Kec_Max, Kec_Max); Serial.println("|  Lurus"); break;          // Lurus
        case 0b111 : driveMotor(Kec_Max, Kec_Max); Serial.println("|  Lurus"); break;          // Lurus
        case 0b110 : driveMotor(Kec_Max / 3, Kec_Max / 2); Serial.println("|  Serong Kiri"); break;   // Serong kiri
        case 0b100 : driveMotor(Kec_Max / 2, Kec_Max); Serial.println("|  Belok Kiri"); break;        // Belok kiri
        case 0b101 : driveMotor(Kec_Max, Kec_Max); Serial.println("|  Lurus"); break;        // Belok kiri
      }
    }
    
    int16_t BacaSensor() {
      int16_t bitSensor = 0;
    
      for (byte i = 0; i < 3; i++) {
        if (analogRead(pinSensor[i]) > limitSensor[i]) {
          bitSensor = bitSensor | (0b100 >> i);
          Serial.print("1");
        } else Serial.print("0");
      }
    
      return bitSensor;
    }
    
    
    void driveMotor(int16_t Left, int16_t Right) {
      if (Left > 0) {
        digitalWrite(pin_MOTOR_DIRL, LOW);
      } else {
        digitalWrite(pin_MOTOR_DIRL, HIGH);
        Left = 255 + Left;
      }
      analogWrite(pin_MOTOR_PWML, Left);
    
      if (Right > 0) {
        digitalWrite(pin_MOTOR_DIRR, LOW);
      } else {
        digitalWrite(pin_MOTOR_DIRR, HIGH);
        Right = 255 + Right;
      }
      analogWrite(pin_MOTOR_PWMR, Right);
    }
    

    Arduino
    Elektronika
    Robotic

    Related Posts

    MUHAMMAD ILHAM

    MUHAMMAD ILHAM

    “ Ikat ilmu dengan menulisnya ”
    ― Ali bin Abi Thalib ―

  • Next Post
    Previous Post

    6 comments

    1. jepang1980July 12, 2019 at 8:40 PM

      Kalau pakai 2 ldr bisa gak mas,dan sketch mana yang harus di rubah

      ReplyDelete
      Replies
        Reply
    2. AnonymousOctober 6, 2019 at 1:35 PM

      SWITCH ON OFFNYA DIPASANG DIMANA

      ReplyDelete
      Replies
      1. MUHAMMAD ILHAMOctober 6, 2019 at 1:58 PM

        kabel + setelah baterai

        Delete
        Replies
          Reply
      2. Reply
    3. haruyaJanuary 3, 2020 at 8:52 PM

      mas, untuk kodingnya udah bisa tapi boleh ga minta sedikit penjelasannya ??

      ReplyDelete
      Replies
        Reply
    4. UnknownJanuary 14, 2020 at 5:49 PM

      Harus download librari apa aja bang klo mau upload program nya??

      ReplyDelete
      Replies
        Reply
    5. English Escorts SunderlandDecember 6, 2024 at 10:49 AM

      I enjoyed reading thhis

      ReplyDelete
      Replies
        Reply
    Add comment
    Load more...


    EmoticonEmoticon

    Popular Posts

    • Download Cadsoft Eagle Professional 7.2.0 Full
    • Membuat Running LED Dengan IC 4017 dan Timer NE555
    • Cara Mudah Membuat Layout PCB Dengan Menggunakan Lotion Anti Nyamuk
    • Cara Memperbaiki Kipas Angin Mati Total [Tidak Berputar Sama Sekali]
    • Cara Mudah Cek HP Android Asli atau Palsu

    Categories

    Elektronika Arduino Tips dan Trik Robotic Tutorial IoT Software Arduino Tutorial PCB STM32

    Recent Posts

     
    Copyright © MUHILHAM • Electronics Hobbyist and Maker. All Rights Reserved.