Project 2 - Measuring the distance of an object using ultrasonic sensor and also smoothen the sensor data using moving average filter
#include<Wire.h> //Library for I2C Communication functions
int trigPin = 11; // Trigger
int echoPin = 12; // Echo
long duration, cm, inches;//long int declaration high values
long sum=0;//sum intialized with 0
long avg;
int i;
void setup()
{
//Serial Port begin
Serial.begin (9600);//Barud rate
pinMode(trigPin, OUTPUT);//Define inputs and outputs
pinMode(echoPin, INPUT);
}
void loop()
{
digitalWrite(trigPin, LOW); // The sensor is triggered by a HIGH pulse of 10 or more microseconds.
delayMicroseconds(5);
digitalWrite(trigPin, HIGH); // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);// Read the signal from the sensor: a HIGH pulse whose
duration = pulseIn(echoPin, HIGH); // duration is the time (in microseconds) from the sending of the ping to the reception of its echo off of an object.
// Convert the time into a distance
cm = (duration/2) / 29.1; // Divide by 29.1 or multiply by 0.0343
inches = (duration/2) / 74; // Divide by 74 or multiply by 0.0135
for (i=0; i<5; i++)
{
sum=sum+inches;
avg = sum/5;
}
Serial.print(avg);// serial monitor prints the avg and distance in cm,inches
Serial.print("Avg, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
Serial.print(inches);
Serial.print("in");
Serial.println();
delay(250);//delay 250 mlsec
}