#include <AccelStepper.h>
#define STEP_PIN 8
#define DIR_PIN 9
#define TRIG_PIN A1
#define ECHO_PIN A2
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);
void setup() {
Serial.begin(9600); // Initialize Serial communication
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
stepper.setMaxSpeed(10000); // Set maximum speed
stepper.setAcceleration(5000); // Set acceleration
}
void loop() {
long distance = measureDistance();
// Print the distance to the Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
if (distance > 20) {
stepper.moveTo(200); // Move to position 200 steps forward
} else {
stepper.moveTo(0); // Move to position 0 steps (backward)
}
// Run the stepper until it reaches the target position
stepper.run();
}
long measureDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
long distance = (duration * 0.0034) / 2; // Calculate distance in cm
return distance;
}