eureka7

Source Code Line Follower V.1 (SMAN 4 PKU XII)

Nov 24th, 2025 (edited)
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 4.44 KB | Source Code | 0 0
  1. // Definisi pin sensor infrared
  2. #define IR_SENSOR_BACK_RIGHT A0   //SENSOR KANAN LUAR
  3. #define IR_SENSOR_FRONT_RIGHT A1   //SENSOR KANAN DALAM
  4. #define IR_SENSOR_FRONT_LEFT  A2   //SENSOR KIRI DALAM
  5. #define IR_SENSOR_BACK_LEFT A3     //SENSOR KIRI LUAR
  6.  
  7. // Definisi pin motor driver L298N
  8. #define MOTOR_LEFT_PIN1 4
  9. #define MOTOR_LEFT_PIN2 5
  10. #define MOTOR_RIGHT_PIN1 6
  11. #define MOTOR_RIGHT_PIN2 7
  12. #define MOTOR_ENABLE_LEFT 3
  13. #define MOTOR_ENABLE_RIGHT 9
  14.  
  15. // Kecepatan motor untuk setiap kondisi logika (0-255)
  16. #define SPEED_TURN 80  //Belok Biasa
  17. #define FULLSPEED_TURN 80 //Belok Tajam
  18. #define SPEED_DEFAULT 60 //Kecepatan Dasar
  19.  
  20.  
  21. void setup() {
  22.   // Inisialisasi pin sensor sebagai input
  23.   pinMode(IR_SENSOR_FRONT_LEFT, INPUT);
  24.   pinMode(IR_SENSOR_FRONT_RIGHT, INPUT);
  25.   pinMode(IR_SENSOR_BACK_LEFT, INPUT);
  26.   pinMode(IR_SENSOR_BACK_RIGHT, INPUT);
  27.  
  28.   // Inisialisasi pin motor driver sebagai output
  29.   pinMode(MOTOR_LEFT_PIN1, OUTPUT);
  30.   pinMode(MOTOR_LEFT_PIN2, OUTPUT);
  31.   pinMode(MOTOR_RIGHT_PIN1, OUTPUT);
  32.   pinMode(MOTOR_RIGHT_PIN2, OUTPUT);
  33.   pinMode(MOTOR_ENABLE_LEFT, OUTPUT);
  34.   pinMode(MOTOR_ENABLE_RIGHT, OUTPUT);
  35.  
  36.   // Atur kecepatan awal motor
  37.   analogWrite(MOTOR_ENABLE_LEFT, SPEED_DEFAULT);
  38.   analogWrite(MOTOR_ENABLE_RIGHT, SPEED_DEFAULT);
  39. }
  40.  
  41. void loop() {
  42.   int frontLeft = digitalRead(IR_SENSOR_FRONT_LEFT);
  43.   int frontRight = digitalRead(IR_SENSOR_FRONT_RIGHT);
  44.   int backLeft = digitalRead(IR_SENSOR_BACK_LEFT);
  45.   int backRight = digitalRead(IR_SENSOR_BACK_RIGHT);  
  46.   if(backLeft == HIGH && frontLeft == HIGH && frontRight == HIGH && backRight == HIGH){
  47.     //Berhenti
  48.     digitalWrite(MOTOR_LEFT_PIN1, LOW);
  49.     digitalWrite(MOTOR_LEFT_PIN2, LOW);
  50.     analogWrite(MOTOR_ENABLE_LEFT, SPEED_DEFAULT);
  51.     digitalWrite(MOTOR_RIGHT_PIN1, LOW);
  52.     digitalWrite(MOTOR_RIGHT_PIN2, LOW);
  53.     analogWrite(MOTOR_ENABLE_RIGHT, SPEED_DEFAULT);
  54.     delay(5000);
  55.   }else if(backLeft == HIGH && frontLeft == LOW && frontRight == LOW && backRight == LOW){
  56.     //Belok Kiri Tajam
  57.     digitalWrite(MOTOR_LEFT_PIN1, LOW);
  58.     digitalWrite(MOTOR_LEFT_PIN2, LOW);
  59.     analogWrite(MOTOR_ENABLE_LEFT, FULLSPEED_TURN);
  60.     digitalWrite(MOTOR_RIGHT_PIN1, HIGH);
  61.     digitalWrite(MOTOR_RIGHT_PIN2, LOW);
  62.     analogWrite(MOTOR_ENABLE_RIGHT, FULLSPEED_TURN);
  63.   }else if(backLeft == HIGH && frontLeft == HIGH && frontRight == LOW && backRight == LOW){
  64.     //Belok Kiri Tajam
  65.     digitalWrite(MOTOR_LEFT_PIN1, LOW);
  66.     digitalWrite(MOTOR_LEFT_PIN2, LOW);
  67.     analogWrite(MOTOR_ENABLE_LEFT, FULLSPEED_TURN);
  68.     digitalWrite(MOTOR_RIGHT_PIN1, HIGH);
  69.     digitalWrite(MOTOR_RIGHT_PIN2, LOW);
  70.     analogWrite(MOTOR_ENABLE_RIGHT, FULLSPEED_TURN);
  71.   }else if(backLeft == LOW && frontLeft == HIGH && frontRight == LOW && backRight == LOW){
  72.     //Belok Kiri
  73.     digitalWrite(MOTOR_LEFT_PIN1, LOW);
  74.     digitalWrite(MOTOR_LEFT_PIN2, LOW);
  75.     analogWrite(MOTOR_ENABLE_LEFT, SPEED_TURN);
  76.     digitalWrite(MOTOR_RIGHT_PIN1, HIGH);
  77.     digitalWrite(MOTOR_RIGHT_PIN2, LOW);
  78.     analogWrite(MOTOR_ENABLE_RIGHT, SPEED_TURN);
  79.   }else if(backLeft == LOW && frontLeft == LOW && frontRight == HIGH && backRight == LOW){
  80.     //Belok Kanan
  81.     digitalWrite(MOTOR_LEFT_PIN1, HIGH);
  82.     digitalWrite(MOTOR_LEFT_PIN2, LOW);
  83.     analogWrite(MOTOR_ENABLE_LEFT, SPEED_TURN);
  84.     digitalWrite(MOTOR_RIGHT_PIN1, LOW);
  85.     digitalWrite(MOTOR_RIGHT_PIN2, LOW);
  86.     analogWrite(MOTOR_ENABLE_RIGHT, SPEED_TURN);
  87.   }else if(backLeft == LOW && frontLeft == LOW && frontRight == HIGH && backRight == HIGH){
  88.     //Belok Kanan Tajam
  89.     digitalWrite(MOTOR_LEFT_PIN1, HIGH);
  90.     digitalWrite(MOTOR_LEFT_PIN2, LOW);
  91.     analogWrite(MOTOR_ENABLE_LEFT, FULLSPEED_TURN);
  92.     digitalWrite(MOTOR_RIGHT_PIN1, LOW);
  93.     digitalWrite(MOTOR_RIGHT_PIN2, LOW);
  94.     analogWrite(MOTOR_ENABLE_RIGHT, FULLSPEED_TURN);
  95.   }else if(backLeft == LOW && frontLeft == LOW && frontRight == LOW && backRight == HIGH){
  96.     //Belok Kanan Tajam
  97.     digitalWrite(MOTOR_LEFT_PIN1, HIGH);
  98.     digitalWrite(MOTOR_LEFT_PIN2, LOW);
  99.     analogWrite(MOTOR_ENABLE_LEFT, FULLSPEED_TURN);
  100.     digitalWrite(MOTOR_RIGHT_PIN1, LOW);
  101.     digitalWrite(MOTOR_RIGHT_PIN2, LOW);
  102.     analogWrite(MOTOR_ENABLE_RIGHT, FULLSPEED_TURN);
  103.   }else{
  104.     //Maju
  105.     digitalWrite(MOTOR_LEFT_PIN1, HIGH);
  106.     digitalWrite(MOTOR_LEFT_PIN2, LOW);
  107.     analogWrite(MOTOR_ENABLE_LEFT, SPEED_DEFAULT);
  108.     digitalWrite(MOTOR_RIGHT_PIN1, HIGH);
  109.     digitalWrite(MOTOR_RIGHT_PIN2, LOW);
  110.     analogWrite(MOTOR_ENABLE_RIGHT, SPEED_DEFAULT);  
  111.   }
  112. }
  113.  
Advertisement
Add Comment
Please, Sign In to add comment