#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Initialize the LCD with the I2C address (e.g., 0x27) and display size (16x2)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pins for Ultrasonic Sensor
const int trigPin = 9;
const int echoPin = 10;
float bodyMass;
float height;
float bmi;
void setup() {
Serial.begin(115200);
Serial.print("hello");
// Serial.begin(9600);
// Initialize the LCD
lcd.init();
lcd.backlight();
// Initial LCD message
lcd.print("Enter Mass:");
lcd.setCursor(0, 1);
lcd.print("kg: ");
}
void loop() {
// Get body mass from Serial
if (Serial.available() > 0) {
bodyMass = Serial.parseFloat();
lcd.clear();
lcd.print("Mass: ");
lcd.print(bodyMass);
lcd.print(" kg");
// Measure height
height = measureHeight();
lcd.setCursor(0, 1);
lcd.print("Height: ");
lcd.print(height, 2);
lcd.print(" m");
// Calculate BMI
bmi = bodyMass / (height * height);
delay(2000);
lcd.clear();
lcd.print("BMI: ");
lcd.print(bmi, 2);
delay(3000);
}
}
float measureHeight() {
long duration;
float distance;
// Send a 10 microsecond pulse to trigger pin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read the echo pin
duration = pulseIn(echoPin, HIGH);
// Convert duration to height in meters
distance = duration * 0.0001715; // meters
return distance;
}