int trigPin = 3; int echoPin = 4; float duration; float distance; void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(9, OUTPUT); pinMode(10, INPUT); } void(* resetFunc) (void) = 0; //declare reset function at address 0 void loop() { // long duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(100); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); //Serial.print(duration); distance = (duration / 2) / 29.1; //microsecond //---------------------------------------------------------------- this part above is for the distance sensor HC-SR04 if (distance >= 400 || distance <= 2) { //range of the sensor Serial.println("Out of range"); } else { Serial.print(distance); Serial.println(" cm "); } digitalWrite(9, LOW); while (distance > 2 && distance < 10) { //if your hand/an object is less than 10cm from the sensor, led will turn on. You can change the range. digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(100); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration / 2) / 29.1; //microsecond digitalWrite(9, HIGH); delay(50);// prevent the bouncing // delay( millisecconds ); while (distance > 10) { //if you move your hand from the sensor, led still have to turn on. digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(100); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration / 2) / 29.1; //microsecond digitalWrite(9, HIGH); delay(50);// prevent the bouncing while (distance > 2 && distance < 10) { //the next time that you move your hand/object closer than 10cm from the sensor, led will turn off digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(100); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration / 2) / 29.1; //microsecond digitalWrite(9, LOW); delay(50);// prevent the bouncing while (distance > 10) { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(100); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration / 2) / 29.1; //microsecond digitalWrite(9, LOW); delay(50);// prevent the bouncing resetFunc(); } } } } }