#include <LiquidCrystal_I2C.h>
#include "HX711.h"
LiquidCrystal_I2C lcd(0x27,20,4);
HX711 scale;
#define LOADCELL_DOUT_PIN 19
#define LOADCELL_SCK_PIN 18
uint16_t wHeight;
uint32_t ulTimer_hx711;
uint32_t ulTimer_display;
int32_t lRaw_value=0;
float fScale=420.0;
float fWeight=0;
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.clear();
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
ulTimer_hx711 = millis();
ulTimer_display = millis();
}
void loop() {
read_hx711();
display();
}
void read_hx711() {
uint32_t currentMillis = millis();
if(currentMillis-ulTimer_hx711 >= 1000)
{
lRaw_value = scale.read();
lRaw_value = (lRaw_value << 8) / 256;
fWeight = lRaw_value / fScale;
}
}
void display() {
uint32_t currentMillis = millis();
if(currentMillis-ulTimer_display >= 1000) {
lcd.setCursor(0, 0);
// 01234567890123456789
lcd.print("Read: ");
lcd.setCursor(6, 0);
lcd.print(lRaw_value);
lcd.setCursor(0, 1);
// 01234567890123456789
lcd.print("Scale: ");
lcd.setCursor(7, 1);
lcd.print(fScale);
lcd.setCursor(0, 2);
// 01234567890123456789
lcd.print("Weight: Kg");
lcd.setCursor(8, 2);
lcd.print(fWeight);
}
}