Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Definisi pin sensor infrared
- #define IR_SENSOR_BACK_RIGHT A0 //SENSOR KANAN LUAR
- #define IR_SENSOR_FRONT_RIGHT A1 //SENSOR KANAN DALAM
- #define IR_SENSOR_FRONT_LEFT A2 //SENSOR KIRI DALAM
- #define IR_SENSOR_BACK_LEFT A3 //SENSOR KIRI LUAR
- // Definisi pin motor driver L298N
- #define MOTOR_LEFT_PIN1 4
- #define MOTOR_LEFT_PIN2 5
- #define MOTOR_RIGHT_PIN1 6
- #define MOTOR_RIGHT_PIN2 7
- #define MOTOR_ENABLE_LEFT 3
- #define MOTOR_ENABLE_RIGHT 9
- // Kecepatan motor untuk setiap kondisi logika (0-255)
- #define SPEED_TURN 80 //Belok Biasa
- #define FULLSPEED_TURN 80 //Belok Tajam
- #define SPEED_DEFAULT 60 //Kecepatan Dasar
- void setup() {
- // Inisialisasi pin sensor sebagai input
- pinMode(IR_SENSOR_FRONT_LEFT, INPUT);
- pinMode(IR_SENSOR_FRONT_RIGHT, INPUT);
- pinMode(IR_SENSOR_BACK_LEFT, INPUT);
- pinMode(IR_SENSOR_BACK_RIGHT, INPUT);
- // Inisialisasi pin motor driver sebagai output
- pinMode(MOTOR_LEFT_PIN1, OUTPUT);
- pinMode(MOTOR_LEFT_PIN2, OUTPUT);
- pinMode(MOTOR_RIGHT_PIN1, OUTPUT);
- pinMode(MOTOR_RIGHT_PIN2, OUTPUT);
- pinMode(MOTOR_ENABLE_LEFT, OUTPUT);
- pinMode(MOTOR_ENABLE_RIGHT, OUTPUT);
- // Atur kecepatan awal motor
- analogWrite(MOTOR_ENABLE_LEFT, SPEED_DEFAULT);
- analogWrite(MOTOR_ENABLE_RIGHT, SPEED_DEFAULT);
- }
- void loop() {
- int frontLeft = digitalRead(IR_SENSOR_FRONT_LEFT);
- int frontRight = digitalRead(IR_SENSOR_FRONT_RIGHT);
- int backLeft = digitalRead(IR_SENSOR_BACK_LEFT);
- int backRight = digitalRead(IR_SENSOR_BACK_RIGHT);
- if(backLeft == HIGH && frontLeft == HIGH && frontRight == HIGH && backRight == HIGH){
- //Berhenti
- digitalWrite(MOTOR_LEFT_PIN1, LOW);
- digitalWrite(MOTOR_LEFT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_LEFT, SPEED_DEFAULT);
- digitalWrite(MOTOR_RIGHT_PIN1, LOW);
- digitalWrite(MOTOR_RIGHT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_RIGHT, SPEED_DEFAULT);
- delay(5000);
- }else if(backLeft == HIGH && frontLeft == LOW && frontRight == LOW && backRight == LOW){
- //Belok Kiri Tajam
- digitalWrite(MOTOR_LEFT_PIN1, LOW);
- digitalWrite(MOTOR_LEFT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_LEFT, FULLSPEED_TURN);
- digitalWrite(MOTOR_RIGHT_PIN1, HIGH);
- digitalWrite(MOTOR_RIGHT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_RIGHT, FULLSPEED_TURN);
- }else if(backLeft == HIGH && frontLeft == HIGH && frontRight == LOW && backRight == LOW){
- //Belok Kiri Tajam
- digitalWrite(MOTOR_LEFT_PIN1, LOW);
- digitalWrite(MOTOR_LEFT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_LEFT, FULLSPEED_TURN);
- digitalWrite(MOTOR_RIGHT_PIN1, HIGH);
- digitalWrite(MOTOR_RIGHT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_RIGHT, FULLSPEED_TURN);
- }else if(backLeft == LOW && frontLeft == HIGH && frontRight == LOW && backRight == LOW){
- //Belok Kiri
- digitalWrite(MOTOR_LEFT_PIN1, LOW);
- digitalWrite(MOTOR_LEFT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_LEFT, SPEED_TURN);
- digitalWrite(MOTOR_RIGHT_PIN1, HIGH);
- digitalWrite(MOTOR_RIGHT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_RIGHT, SPEED_TURN);
- }else if(backLeft == LOW && frontLeft == LOW && frontRight == HIGH && backRight == LOW){
- //Belok Kanan
- digitalWrite(MOTOR_LEFT_PIN1, HIGH);
- digitalWrite(MOTOR_LEFT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_LEFT, SPEED_TURN);
- digitalWrite(MOTOR_RIGHT_PIN1, LOW);
- digitalWrite(MOTOR_RIGHT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_RIGHT, SPEED_TURN);
- }else if(backLeft == LOW && frontLeft == LOW && frontRight == HIGH && backRight == HIGH){
- //Belok Kanan Tajam
- digitalWrite(MOTOR_LEFT_PIN1, HIGH);
- digitalWrite(MOTOR_LEFT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_LEFT, FULLSPEED_TURN);
- digitalWrite(MOTOR_RIGHT_PIN1, LOW);
- digitalWrite(MOTOR_RIGHT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_RIGHT, FULLSPEED_TURN);
- }else if(backLeft == LOW && frontLeft == LOW && frontRight == LOW && backRight == HIGH){
- //Belok Kanan Tajam
- digitalWrite(MOTOR_LEFT_PIN1, HIGH);
- digitalWrite(MOTOR_LEFT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_LEFT, FULLSPEED_TURN);
- digitalWrite(MOTOR_RIGHT_PIN1, LOW);
- digitalWrite(MOTOR_RIGHT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_RIGHT, FULLSPEED_TURN);
- }else{
- //Maju
- digitalWrite(MOTOR_LEFT_PIN1, HIGH);
- digitalWrite(MOTOR_LEFT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_LEFT, SPEED_DEFAULT);
- digitalWrite(MOTOR_RIGHT_PIN1, HIGH);
- digitalWrite(MOTOR_RIGHT_PIN2, LOW);
- analogWrite(MOTOR_ENABLE_RIGHT, SPEED_DEFAULT);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment