Project 2 - Measuring the distance of an object using ultrasonic sensor and also smoothen the sensor data using moving average filter
COMPONENTS USED:
| Name | Quantity | Component | ||
| DIST1 | 1 | Ultrasonic Distance Sensor | ||
| U1 | 1 | Arduino Uno R3 | ||
| U2 | 1 | LCD 16 x 2 | ||
| Rpot3 | 1 | 250 kΩ Potentiometer | ||
CODE:
#include
const int trig_Pin = 11;
const int echo_Pin = 10;
long duration;
int distance;
bool measured = false;
int max_Reference_Height = 500;
int reference_Height;
int max_Height = 220;
int min_Height = 30;
const int rsPin = 2;
const int enablePin = 3;
const int data_4 = 4;
const int data_5 = 5;
const int data_6 = 6;
const int data_7 = 7;
LiquidCrystal lcd(rsPin, enablePin, data_4, data_5, data_6, data_7);
// 16*2 LCD Display | RS - 42, Enable - 44, Data - 46, 48, 50, 52 (R/W - GND)
void setup() {
// put your setup code here, to run once:
lcd.begin(16, 2);
lcd.clear();
pinMode(trig_Pin, OUTPUT);
pinMode(echo_Pin, INPUT);
}
void loop() {
if (measured == false){
lcdInitialAlert();
clearTrigger();
triggerON(10);
distance = distanceMeasured();
printDistanceToLCD(distance);
measured = true;
}
}
void clearTrigger(){
// Clears the trigPin
digitalWrite(trig_Pin, LOW);
delayMicroseconds(2);
}
void triggerON(int MicroSeconds){
// Sets the trigPin on HIGH state for X micro seconds
digitalWrite(trig_Pin, HIGH);
delayMicroseconds(MicroSeconds);
digitalWrite(trig_Pin, LOW);
}
int distanceMeasured(){
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echo_Pin, HIGH);
// Calculating the distance
distance = duration*0.034/2;
Serial.print("Distance: ");
Serial.println(distance);
return distance;
}
void printDistanceToLCD(int distance){
lcd.setCursor(0, 1);
lcd.print("Height : ");
lcd.print(distance);
lcd.print(" cm");
}
void lcdInitialAlert(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MEASUREMENTS..");
delay(2000);
}
CIRCUIT DIAGRAM:

MEASUREMENT AND DIFFERENT RANGES:

