#include <Servo.h>
Servo servo1;
const int servoPin = 11;
const int echoPin = 12;
const int trigPin = 13;
float duration, distance;
volatile int pos = 90;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
servo1.attach(servoPin);
servo1.write(pos);
delay(1000);
}
void loop() {
static unsigned long timer = millis();
digitalWrite(trigPin, LOW);
delayMicroseconds(10);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration * .0343) / 2;
Serial.print("Distance: ");
Serial.println(distance);
delay(100);
if (distance < 50.0) {
while (pos < 180) {
pos++;
servo1.write(pos);
delay(10);
}
timer = millis();
}
if (millis() - timer > 3000) {
while (pos > 0) {
pos--;
servo1.write(pos);
delay(10);
}
}
}