#include "HX711.h"
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
#define relay1 6
#define relay2 7
#define button1 8
#define button2 9
// int tombolState = LOW; // Status tombol (LOW = mati, HIGH = hidup)
// int lastButtonState = LOW;
// unsigned long lastDebounceTime = 0;
// unsigned long debounceDelay = 50;
float calibration_factor = 420;
float GRAM;
float KG;
float batas1 = 50;
float batas2 = 50;
bool relay1Status = false; // Status relay (mati)
bool relay2Status = false;
bool relay1Dihidupkan = false;
bool relay2Dihidupkan = false;
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
HX711 scale;
HX711 scale2;
void setup() {
Serial.begin(9600);
Serial.println("Initializing the scale");
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
scale.begin(A1, A2);
scale2.begin(2,3);
scale.set_scale();
scale.tare();
scale2.set_scale();
scale2.tare();
lcd.init();
lcd.backlight();
}
void loop() {
scale.set_scale(calibration_factor);
scale2.set_scale(calibration_factor);
GRAM = scale.get_units(), 4;
KG = scale2.get_units(), 4;
int btn1 = digitalRead(button1);
int btn2 = digitalRead(button2);
Serial.print("berat 1 = ");
Serial.print(GRAM);
Serial.println(" Kg");
lcd.setCursor(0, 0);
lcd.print("berat1 = ");
lcd.print(GRAM);
lcd.print(" Kg");
Serial.print("berat 2 = ");
Serial.print(KG);
Serial.println(" Kg");
lcd.setCursor(0, 1);
lcd.print("berat2 = ");
lcd.print(KG);
lcd.print(" Kg");
delay(1000);
//Serial.println(btn1);
if(btn1 == 0 ){
relay1Status = true;
relay2Status = true;
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
relay1Dihidupkan = false;
relay2Dihidupkan = false;
}
if(btn2==0 ){
relay1Status = false;
relay2Status = false;
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
relay1Dihidupkan = false;
relay2Dihidupkan = false;
}
if(GRAM >= 50 ){
relay1Status = false;
digitalWrite(relay1, LOW);
}
if(KG >= 50 ){
relay2Status = false;
digitalWrite(relay2, LOW);
}
}