Wednesday, May 26, 2021

Make Automatic Room light

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

Scanners: Explained.

 Introduction:           If you need a copy of a document that is sitting on your table. For this, with your PC, you use your flatbed scan...