#include <Ultrasonic.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#define echoPin 7
#define trigPin 6
const int loadCellPin = A0;
const int VCC = A1;
const float calibration_factor = 2280.0; // Calibration factor obtained from load cell calibration
float weight = 0.0;
float height = 0.0;
float BMI = 0.0;
Ultrasonic ultrasonic(trigPin, echoPin);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
}
void loop() {
weight = (analogRead(loadCellPin) - analogRead(VCC)) / calibration_factor; // Calculate weight in kg
height = ultrasonic.read() / 100.0; // Convert height to meters
BMI = weight / (height * height); // Calculate BMI
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Weight: ");
lcd.print(weight, 2);
lcd.print(" kg");
lcd.setCursor(0,1);
lcd.print("Height: ");
lcd.print(height, 2);
lcd.print(" m");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("BMI: ");
lcd.print(BMI, 2);
lcd.print(" kg/m2");
delay(1000);
}