const int US_sensorPin = 7; const int relayPin = 10; const int range = 8; //Range of detection from the sensor in cm int valRelay = 0; // variable to store the read value long relayAction; void setup() { pinMode(relayPin, OUTPUT); digitalWrite(relayPin, HIGH); // Default relay should be OFF! } void loop() { long duration, cm; pinMode(US_sensorPin, OUTPUT); digitalWrite(US_sensorPin, LOW); delayMicroseconds(2); digitalWrite(US_sensorPin, HIGH); delayMicroseconds(5); digitalWrite(US_sensorPin, LOW); pinMode(US_sensorPin, INPUT); duration = pulseIn(US_sensorPin, HIGH); cm = microsecondsToCentimeters(duration); if (cm < range && cm > 1) { long new_duration, new_cm; pinMode(US_sensorPin, OUTPUT); digitalWrite(US_sensorPin, LOW); delayMicroseconds(2); digitalWrite(US_sensorPin, HIGH); delayMicroseconds(5); digitalWrite(US_sensorPin, LOW); pinMode(US_sensorPin, INPUT); new_duration = pulseIn(US_sensorPin, HIGH); new_cm = microsecondsToCentimeters(new_duration); valRelay = digitalRead(relayPin); // read the status of input pin if (valRelay) { relayAction = LOW; } else { relayAction = HIGH; } if (new_cm < range && new_cm > 1) { digitalWrite(relayPin, relayAction); // Switch Ralay ON or OFF delay(1000); // Miliseconds which it waits before does any action again } } } long microsecondsToCentimeters(long microseconds) { return microseconds / 29 / 2; }