#include <AFMotor.h>
#define Speed 120 // motor speed
#define Trig A0
#define Echo A1
#define BUZZER 8 // optional buzzer
#define OBSTACLE_DIST 5 // stop if obstacle <= 5 cm
AF_DCMotor Motor(1); // single motor M1
void setup() {
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(BUZZER, OUTPUT);
Motor.setSpeed(Speed);
Serial.begin(9600);
}
void loop() {
int distance = getDistance();
Serial.print(“Forward Distance: “);
Serial.println(distance);
if (distance <= OBSTACLE_DIST) { // obstacle detected
stopMotor();
buzz(); // optional: alert
backward();
delay(400); // move backward briefly
stopMotor();
} else {
forward();
}
delay(50); // short delay for fast sensor polling
}
// —————- MOVEMENT —————-
void forward() { Motor.run(FORWARD); }
void backward() { Motor.run(BACKWARD); }
void stopMotor(){ Motor.run(RELEASE); }
// —————- ULTRASONIC —————-
int getDistance() {
digitalWrite(Trig, LOW);
delayMicroseconds(3);
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
long duration = pulseIn(Echo, HIGH, 30000); // 30 ms timeout (~510 cm)
int cm = duration * 0.034 / 2;
return cm;
}
// —————- BUZZER —————-
void buzz() {
for(int i=0;i<2;i++){
digitalWrite(BUZZER,HIGH);
delay(100);
digitalWrite(BUZZER,LOW);
delay(100);
}
}
