#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "HX711.h"
#define DT_PIN 2
#define SCK_PIN 3
#define SET_BUTTON_PIN 4
#define CLEAR_BUTTON_PIN 5
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows
HX711 scale;
float storedWeight = 0;
void setup() {
lcd.init();
lcd.backlight();
lcd.begin(16, 2); // Initialize the display
scale.begin(DT_PIN, SCK_PIN);
pinMode(SET_BUTTON_PIN, INPUT_PULLUP); // set button pin
pinMode(CLEAR_BUTTON_PIN, INPUT_PULLUP); // clear button pin
lcd.print("Weight: ");
}
void loop() {
float weight = scale.get_units();
lcd.setCursor(8, 0);
lcd.print(weight);
lcd.print(" g ");
if (digitalRead(SET_BUTTON_PIN) == LOW) {
storedWeight = weight;
lcd.setCursor(0, 1);
lcd.print("Stored: ");
lcd.print(storedWeight);
lcd.print(" g ");
delay(500); // debounce delay
}
if (digitalRead(CLEAR_BUTTON_PIN) == LOW) {
storedWeight = 0;
lcd.setCursor(0, 1);
lcd.print("Stored: ");
lcd.print(storedWeight);
lcd.print(" g ");
delay(500); // debounce delay
}
if (storedWeight != 0) {
float diff = weight - storedWeight;
lcd.setCursor(0, 1);
lcd.print("Diff: ");
lcd.print(diff);
lcd.print(" g ");
}
delay(100); // Adjust as needed
}