#include <HX711.h> // Library untuk Load Cell dan HX711
#include <Wire.h> // Library untuk komunikasi I2C
#include <LiquidCrystal_I2C.h> // Library untuk LCD I2C
// Pin koneksi HX711
#define DT_PIN 3 // Pin data HX711
#define SCK_PIN 4 // Pin clock HX711
// Pin push button tara
#define TARA_BUTTON_PIN 2 // Pin push button
// Inisialisasi Load Cell dan LCD
HX711 scale;
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Variabel
float calibration_factor = -7050; // Faktor kalibrasi, sesuaikan nilainya sesuai Load Cell
long tara_value = 0; // Nilai tara
bool taraPressed = false; // Status apakah tombol tara ditekan
void setup() {
// Inisialisasi LCD
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Alat Ukur");
lcd.print("Massa Jenis BBM Pertalite");
// Inisialisasi sensor Load Cell (HX711)
scale.begin(DT_PIN, SCK_PIN);
scale.set_scale(calibration_factor); // Set faktor kalibrasi
scale.tare(); // NOL-kan skala
// Inisialisasi push button dengan INPUT_PULLUP
pinMode(TARA_BUTTON_PIN, INPUT_PULLUP);
// Tampilkan pesan awal
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Siap menimbang");
}
void loop() {
// Cek apakah tombol tara ditekan
if (digitalRead(TARA_BUTTON_PIN) == LOW && !taraPressed) {
tara_value = scale.get_units(10); // Ambil nilai tara saat tombol ditekan
taraPressed = true; // Hindari pengulangan baca selama tombol ditekan
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tara disetel!");
delay(1000); // Delay untuk menunggu tampilan
lcd.clear();
} else if (digitalRead(TARA_BUTTON_PIN) == HIGH) {
taraPressed = false; // Reset status tombol saat dilepas
}
// Baca nilai berat dan konversi ke gram
float weight = (scale.get_units(10) - tara_value) * 1000; // Kalibrasi hasil ke gram
MJ = weight/1000;
// Tampilkan berat di LCD
lcd.setCursor(0, 0);
lcd.print("Berat: ");
lcd.print(weight, 2); // Tampilkan nilai berat dalam gram dengan 2 digit desimal
lcd.print(" g ");
lcd.setCursor(0, 1);
lcd.print("MJ: ");
lcd.print(MJ, 5); // Tampilkan nilai berat dalam gram dengan 2 digit desimal
lcd.print(" g/ml ");
delay(500); // Update tampilan setiap 500 ms
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
cell1:VCC
cell1:DT
cell1:SCK
cell1:GND
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
led1:A
led1:C
led2:A
led2:C
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
temp1:GND
temp1:DQ
temp1:VCC
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2