#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int trigPin = 7;
const int echoPin = 6;
class MHRatio {
private:
float weight;
float height;
public:
MHRatio(float w, float h) : weight(w), height(h) {}
float calculateRatio() {
return weight / (height * height);
}
void displayRatio(float mhratio) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MHRatio: ");
lcd.print(mhratio, 2);
}
};
float measureHeight() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = duration * 0.034 / 2;
return distance / 100.0;
}
void setup() {
Serial.begin(9600);
Serial.println("Enter Weight:");
lcd.begin(16, 2);
lcd.backlight();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
lcd.setCursor(0, 0);
lcd.print("Enter Weight:");
}
void loop() {
if (Serial.available() > 0) {
float weight = Serial.parseFloat();
float height = measureHeight();
if (weight > 0 && height > 0) {
MHRatio stoneRatio(weight, height);
float mhRatio = stoneRatio.calculateRatio();
stoneRatio.displayRatio(mhRatio);
}
}
}