Project 2 - Measuring the distance of an object using ultrasonic sensor and also smoothen the sensor data using moving average filter
#offline embedded system
float microsecToinchs( float d);//function declaration
float avg;// variable declaration
int i,sum;//variable declaration
int duration,inches;//variable declaration
float Duration_inch;//variable declaration
int data[5];//variable declaration
void setup()
{
Serial.begin(9600);//to enable serial monitor
pinMode(7, INPUT);// set 7 as input
}
void loop()
{
float average = mov_avg();// calling moving average function
Serial.println("distance value is");
Serial.println( inches);//print inches in serial monitor
delay(1000);
}
void US_Tx()// function definition for transmitter
{
pinMode(7,OUTPUT);//set 7 as output
digitalWrite(7,LOW);// make signal as low
delayMicroseconds(2);//delay for 2 microsecond
digitalWrite(7,HIGH);//make signal as high
delayMicroseconds(5);//delay for 5 microsecond
digitalWrite(7,LOW);// make signal as low
delayMicroseconds(2);//delay for 2 microsecond
}
float US_Rx() // function definition for receiver
{
pinMode(7,INPUT);//set 7 as input
duration=(unsigned int)pulseIn(7,HIGH);//receive sound waves and stored in duration
Duration_inch = microsecToinchs(duration);//call function and stored in Duration_inch
return Duration_inch;// return Duration_inch to receiver function
}
float microsecToinchs(float d)//function definition for microsecToinchs
{
inches=((d/73.35)/2);//formula to convert microsecond into inches
return d;// return inches to microsecdelay function
}
float mov_avg()//moving average function definition
{
for(i=0;i<5;i++)//for loop for array
{
US_Tx();//calling transmission function
data[i]=US_Rx();//store receiver function value
sum=sum+data[i];//summing of data
}
avg=sum/5; //filtered data
return avg;//return average
}