#include<Servo.h>
Servo srv;
unsigned long startTime_servo = 0;
unsigned long internal_servo = 20;
int servo_angle = 0;
int i;
void setup() {
Serial.begin(9600);
pinMode(6, OUTPUT);
pinMode(5, INPUT);
srv.attach(7);
}
void loop() {
unsigned currentTime = millis();
digitalWrite(6, LOW);
digitalWrite(6, HIGH);
int d = pulseIn(5, HIGH);
d = d / 29 / 2;
Serial.println(d);
srv.write(0);
//when ultrasonic sense a HAND within 1 and 20 cm.
if (d <= 20 && d > 1) {
//not clear the meaning(Speend of servo at 20milli?)
if (currentTime - startTime_servo >= internal_servo) {
startTime_servo = currentTime; //for the code to be execute again every 20 milli
srv.write(servo_angle);//intiallly 0 degree
servo_angle++;//increment it by 1 degree every loop
if (servo_angle == 135) { //once servo reach 135 degree
servo_angle = 0;// the servo change back to 0 degree
}
}
}
if (d <= 50 && d >= 21) {
if (currentTime - startTime_servo >= internal_servo) {
startTime_servo = currentTime;
srv.write(servo_angle);
servo_angle++;
if (servo_angle == 180) {
servo_angle = 0;
}
}
}
}