#include <HX711.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DOUT 3
#define CLK 2
#define BTN_TARA 4
HX711 scale;
LiquidCrystal_I2C lcd(0x27,16,2);
float calibration_factor = 420;
unsigned long inicioPressao = 0;
bool botaoPressionado = false;
void setup()
{
Serial.begin(9600);
lcd.init();
lcd.backlight();
scale.begin(DOUT, CLK);
scale.set_scale(calibration_factor);
scale.tare();
pinMode(4, INPUT_PULLUP); // Botao de tara
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Balanca");
delay(2000);
}
void loop()
{
if (digitalRead(BTN_TARA) == LOW)
{
if (!botaoPressionado)
{
botaoPressionado = true;
inicioPressao = millis();
}
int segundos = (millis() - inicioPressao) / 1000;
lcd.setCursor(0,0);
lcd.print("Segure para tarar: ");
lcd.setCursor(0,1);
lcd.print(segundos);
lcd.print("/3 s ");
if (millis() - inicioPressao >= 3000)
{
scale.tare();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Tara OK");
delay(1000);
while (digitalRead(BTN_TARA) == LOW)
{
delay(10);
}
botaoPressionado = false;
}
}
else
{
botaoPressionado = false;
}
float peso = scale.get_units(10);
lcd.setCursor(0,0);
lcd.print("Peso: ");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(peso*1000);
lcd.print(" g");
delay(200);
}