Automatic Room
Light Using Ultrasonic Sensor
Things
Required:
·
Arduino
·
HC SR-04 Ultrasonic Sensor
·
5V Relay Module
·
Jumper Wires
Connections:
Code
for Arduino:
#define TRIGGER_PIN
12 // Arduino pin tied to trigger
pin on the ultrasonic sensor.
#define ECHO_PIN
11 // Arduino pin tied to echo
pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want
to ping for (in centimeters). The maximum sensor distance is rated at 400-500cm.
[this is an arbitrary number]
#define RELAY_LINE1_PIN 8
#include "NewPing.h"
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); //
NewPing setup of pins and maximum distance.
unsigned int critical_distance_cms = 50; // Cutoff distance at which the light will
switch [this is an arbitrary number]
bool state = 0;
void setup() {
Serial.begin(9600); // Open serial monitor at 115200 baud to see ping
results.
pinMode(RELAY_LINE1_PIN, OUTPUT);
digitalWrite(RELAY_LINE1_PIN, HIGH);
// Turn the light off
}
void loop() {
delay(5); // Wait 50ms between pings
(about 20 pings/sec). 29ms should be the shortest delay between pings.
unsigned int
distance = readDistance(); // Current distance of any object facing the
ultrasonic sensor
Serial.print("Ultrasonic: ");
Serial.print(distance); // Send ping, get distance in cm and print
result (0 = outside set distance range)
Serial.println("cm");
// Someone is
near the door
if (distance
< critical_distance_cms)
{
while
(distance < critical_distance_cms)
{
// Check
if they moved away
distance =
readDistance();
delay(5);
// Do nothing until the person moves away from the door
}
state =
!state; // Change the state of the relay
if (state)
{
Serial.println("Door Open!");
digitalWrite(RELAY_LINE1_PIN, LOW); // Turn the light on
}
else
{
Serial.println("Door Closed!");
digitalWrite(RELAY_LINE1_PIN, HIGH);
// Turn the light off
}
}
}
// Updates the value of the Ultrasonic reading
unsigned int readDistance()
{
// Read 7
values from the ultrasonic and get the median value ( median filter )
// Gets rid of
noisy reading
unsigned int
distance = sonar.convert_cm(sonar.ping_median(7));
// The value 0
indicates that the ultrasonic sensor is reading nothing in front of it
// Set this
distance to max distance so the light doesn't switch unnecessarily
if (distance
== 0)
{
distance =
MAX_DISTANCE;
}
return
distance;
}
Note:
You can change the
range of ultrasonic sensor by changing the value in the code which is mentioned
in the third line of the code.
If you are facing a problem, contact me: rizwanmahad606@gmail.com
Stay tuned.
Bye.
No comments:
Post a Comment