#include <LiquidCrystal_I2C.h>
#define LCD_COLUMNS 20
#define LCD_ROWS 4
LiquidCrystal_I2C lcd(0x27, LCD_COLUMNS, LCD_ROWS);
#define trig_pin 3
#define echo_pin 2
#define led 12
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(trig_pin, OUTPUT);
pinMode(echo_pin, INPUT);
pinMode(led, OUTPUT);
lcd.init();
lcd.backlight();
}
float controlUltrasonicSensor() {
digitalWrite(trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin, LOW);
int duration = pulseIn(echo_pin, HIGH);
float distance_cm = duration / 58.47;
float distance_inch = round(distance_cm) / 2.54;
delay(50);
return distance_cm;
}
void printOutputUltrasonic(float distance) {
Serial.print("Distance in centimeters: ");
Serial.println(round(distance));
Serial.print("Distance in inches: ");
Serial.println(round(distance) / 2.54);
}
void controlLEDOutput(float check) {
if (round(check) <= 100) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}
void controlLCD(float measure_cm) {
int lcd_cm = round(measure_cm);
float lcd_in = round(measure_cm) / 2.54;
lcd.setCursor(0,0);
lcd.print("Distance in cm:");
lcd.setCursor(0,1);
lcd.print(lcd_cm);
lcd.setCursor(0,2);
lcd.print("Distance in inches:");
lcd.setCursor(0,3);
lcd.print(lcd_in);
}
void loop() {
// put your main code here, to run repeatedly:
float output_cm = controlUltrasonicSensor();
controlLCD(output_cm);
printOutputUltrasonic(output_cm);
controlLEDOutput(output_cm);
}