Challenge

Project 2 - Measuring the distance of an object using ultrasonic sensor and also smoothen the sensor data using moving average filter

#include

LiquidCrystal lcd(12 ,11 ,5 ,4 ,3 ,2); //Define LCD Module Pins (RS,RN,D4,D5,D6,D7)

int window[10] = {0}; // Creating a integer array of 10 element.

int signalPin = 7; // connected signal pin of sensor to pin No.7 of Arduniolong duration; // Time

long cm; // Centimeters

long inch; // Inches

void setup()

{

Serial.begin(9600);// Initialize serial communication:

lcd.begin(16, 2); // Initialize LCD

}

void loop()

{

pinMode(signalPin, OUTPUT); // Enble pin 7 as output

digitalWrite(signalPin, LOW); // clearing previous data

delayMicroseconds(2); // Micro seconds delay

digitalWrite(signalPin, HIGH); // Triggered by a HIGH pulse

delayMicroseconds(10); // Micro seconds delay

digitalWrite(signalPin, LOW); // Again low

// The same pin is used to read the signal from the PING))):

pinMode(signalPin,INPUT); // Enble pin 7 as input

duration = pulseIn(signalPin,HIGH); //a HIGH pulse duration is the time (in microseconds

cm = duration * 0.0346/2; // conversion

inch = duration * 0.01348/2; // conversion

lcd.setCursor(0, 0); // Setting cursor of LCD

lcd.print(" >>Distance<<"); // Printing this message

lcd.setCursor(0, 1); // Again setting cursor lcd.print(cm); // Printing converted value i.e. 'Time into Centimeters'

lcd.print(" cm ");

lcd.print(inch);// Printing converted value i.e. 'Time into Inhes'

lcd.print(" inch");

// Now smoothen the sensor data

int current_samp = 0;

current_samp = (duration); // duration = current_samp

delayMicroseconds(300); // taking delay

pushVal(current_samp);// calling function

Serial.println(takeAvg()); // calling function

}

void pushVal(int val)

{

int i = 0;

for(i = 1;i < 10; i++)// This for loop run for 10 time

{

window[i-1] = window[i]; // here setting window previous value as window new value

}

window[10 - 1] = val; // finally giving to val

}

int takeAvg() // this funtion is just taking simple avg of 10 element

{

int i = 0;

long sum = 0;

for(i = 0; i < 10; i++) // This for loop is adding 10 element

{

sum += window[i]; //in each cycle sum value is incressing

}

return (sum / 10); // dividing sum with number of element i.e. '10'. }

TINKERCAD SIMULATION OUTPUT:

COMPONENTS USED:

ARDUINO UNO

BREAD BOARD

HCSR-04 ULTRASONIC SENSOR

LCD 16X2 DISPLAY

CONNECTIONS:

ADJUST THE OBJECT IN ULTRASONIC SENSOR CALCULATE THE DISTANCE AND DISPLAY IT:

FIND DISTANCE IN CENTIMETER AND INCHES AND CALCULATE THE AVERAGE:

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.