#include <HX711.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Pin Load Cell
#define DOUT 6
#define CLK 4
// ANGGIT THARIQ AL MUHLIS_D400220028
// Inisialisasi HX711
HX711 scale;
// Inisialisasi LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C 0x27
// Pin Ultrasonik
#define TRIG_PIN 12
#define ECHO_PIN 8
long duration;
int distance;
void setup() {
// Mulai komunikasi serial
Serial.begin(9600);
// Inisialisasi HX711
scale.begin(DOUT, CLK);
// Kalibrasi Load Cell
scale.set_scale(420.f); // Ganti dengan nilai kalibrasi yang sesuai
scale.tare(); // Atur ke 0 saat tidak ada beban
// Inisialisasi LCD
lcd.begin(16, 2);
lcd.print("Menguji Berat...");
// Inisialisasi Pin Ultrasonik
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
// Mengirim sinyal trigger pada sensor ultrasonik
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Menghitung durasi sinyal echo
duration = pulseIn(ECHO_PIN, HIGH);
// Menghitung jarak dengan rumus waktu = jarak / kecepatan suara
distance = duration * 0.034 / 2;
// Cek apakah ada objek di atas load cell
if (distance < 10) { // Misalnya, jarak 10 cm dianggap ada objek
long weight = scale.get_units(5); // Membaca data berat dari load cell
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Berat: ");
lcd.print(weight); // Tampilkan berat pada LCD
lcd.print(" KG");
Serial.print("Jarak: ");
Serial.print(distance);
Serial.print(" cm, Berat: ");
Serial.println(weight);
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tidak ada objek");
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm, Tidak ada objek");
}
delay(1000);
}