#include <Stepper.h>
const int TRIGGER_PIN = 2;
const int ECHO_PIN = 3;
const int GREEN_LED_PIN = 5;
const int DIR_PIN = 17;
const int STEP_PIN = 18;
const int STEPS_PER_REVOLUTION = 200;
const int DISTANCE = 200;
Stepper stepper(STEPS_PER_REVOLUTION, DIR_PIN, STEP_PIN);
void setup() {
Serial.begin(9600);
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
}
void loop() {
long duration, distance;
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
// Calculate distance
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
if (distance <= DISTANCE) {
rotateStepper();
digitalWrite(GREEN_LED_PIN, HIGH);
delay(1000);
digitalWrite(GREEN_LED_PIN, LOW);
}
}
void rotateStepper() {
digitalWrite(DIR_PIN, HIGH);
for (int i = 0; i < STEPS_PER_REVOLUTION; i++) {
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(2000);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(2000);
}
}