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; bool newAction; void setup() { Serial.begin (9600); //Allows serial output to serial monitor 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) { if (newAction) { valRelay = digitalRead(relayPin); // read the status of input pin if (valRelay) { relayAction = LOW; } else { relayAction = HIGH; } digitalWrite(relayPin, relayAction); // Switch Ralay ON or OFF newAction = false; } delay(1000); // Miliseconds which it waits before does any action again } else { newAction = true; } } long microsecondsToCentimeters(long microseconds) { return microseconds / 29 / 2; }