#include <LiquidCrystal_I2C.h>
#include "HX711.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int trigPin = 2;
const int echoPin = 3;
#define DOUT_PIN 4
#define SCK_PIN 5
HX711 scale;
long duration;
float distanceInCm;
float distanceInFeet;
float heigth;
void setup()
{
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
lcd.begin(20, 4);
lcd.backlight();
scale.begin(DOUT_PIN, SCK_PIN);
}
void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
float distanceInCm = duration * 0.034 / 2;
// Convert distance to meters
float distanceInMeters = distanceInCm / 100.0;
float height = distanceInMeters - 2.7432;
float pHeight = abs(height);
long rawValue = scale.read();
float calibratedValue = rawValue / 420.0;
float bmi = calibratedValue / (height*height);
lcd.setCursor(0, 0);
lcd.print("Height: ");
lcd.print(pHeight);
lcd.print("m");
lcd.setCursor(0,1);
lcd.print("Weight: ");
lcd.print(calibratedValue);
lcd.print("kg");
lcd.setCursor(0, 2);
lcd.print("Bmi: ");
lcd.print(bmi);
}