#include "HX711.h"
const int pinDOUT = 2;
const int pinSCK = 4;
HX711 scale;
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int buttonPin = 7;
bool lastButtonState = HIGH;
void setup() {
Serial.begin(115200);
scale.begin(pinDOUT, pinSCK);
scale.set_scale(0.42); // Sesuaikan setelah kalibrasi
scale.tare(); // Nolkan berat awal
pinMode(buttonPin, INPUT_PULLUP); // Tombol aktif LOW
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Timbangan Nutrisi");
delay(1500);
lcd.clear();
}
void loop() {
// Tombol untuk tare
bool currentButtonState = digitalRead(buttonPin);
if (currentButtonState == LOW && lastButtonState == HIGH) {
scale.tare();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tare... 0g");
delay(800);
}
lastButtonState = currentButtonState;
if (scale.is_ready()) {
float gram = scale.get_units(3); // hasil dalam gram
if (gram < 0) gram = 0;
float kalori = gram * 2.0;
Serial.print("Berat: ");
Serial.print(gram, 1);
Serial.print(" g | Kalori: ");
Serial.println(kalori, 1);
lcd.setCursor(0, 0);
lcd.print("Berat: ");
lcd.print(gram, 1);
lcd.print(" g "); // spasi untuk hapus sisa
lcd.setCursor(0, 1);
lcd.print("Kalori: ");
lcd.print(kalori, 1);
lcd.print(" kcal ");
}
delay(200);
}