Project 2 - Measuring the distance of an object using ultrasonic sensor and also smoothen the sensor data using moving average filter
Explanation
The sensor is triggered by a HIGH pulse of ten or more microseconds. Before that, give a short LOW pulse beforehand to ensure a clean HIGH pulse. Then, read the signal from the sensor. i.e. a HIGH pulse whose duration is the time (in microseconds) from the sending of the ping to the reception of its echo off of an object. Convert this time into a distance. Divide by 29.1 or multiply by 0.0343 for distance calculation in centimeters. Divide by 74 or multiply by 0.0135 for distance calculation in inches. Take the average of five readings to estimate the average distance.
Simulation was done on Tinkercad
* Tinkercad circuit schematic, PDF schematics & BOM (both downloaded from Tinkercad) are attached
**Screenshots of output displayed of Serial Monitor is also attached.
*** Arduino Code is given below
Arduino Code
int trigPin = 11; // Trigger
int echoPin = 12; // Echo
long duration, cm, inches;
long sum=0;
long avg;
int i;
void setup()
{
Serial.begin (9600); //Serial Port begin
pinMode(trigPin, OUTPUT); //Define inputs and outputs
pinMode(echoPin, INPUT);
}
void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
cm = (duration/2) / 29.1;
inches = (duration/2) / 74;
for (i=0; i<5; i++)
{
sum=sum+inches;
avg = sum/5;
}
Serial.print(avg);
Serial.print("Avg, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
Serial.print(inches);
Serial.print("in");
Serial.println();
delay(250);
}