/*
Kodingan di atas merupakan implementasi untuk mengukur berat
menggunakan sensor HX711, menampilkan hasilnya pada layar LCD,
menghidupkan LED dan buzzer ketika berat melebihi 1 satuan (misalnya kg),
serta menghasilkan bunyi pada buzzer selama 250 ms saat kondisi tersebut terpenuhi.
Semua perangkat tersebut diendalikan oleh mikrokontroler Arduino melalui pin yang telah ditentukan.*/
#include <Wire.h> //untuk lcd, komunikasi I2C
#include <LiquidCrystal_I2C.h> //menginisialisasi lcd
#include <HX711.h> //menginisialisasikan sensor besar atau HX711
LiquidCrystal_I2C lcd(0x27, 16, 2); // Inisialisasi LCD
#define DOUT 2 // Pin DT HX711
#define CLK 3 // Pin SCK HX711
#define BUZZER_PIN 8 // Pin Buzzer
#define LED_PIN 5 // Pin LED
HX711 scale;
void setup() {
Serial.begin(9600); //menampilkan di serial monitor
scale.begin(DOUT, CLK); //konfigurasi dan inisialisasi sensor berat HX711 yang digunakan
scale.set_scale(); //mengatur faktor kalibrasi pada sensor HX711
pinMode(BUZZER_PIN, OUTPUT); // Mengatur pin Buzzer sebagai output
pinMode(LED_PIN, OUTPUT); // Mengatur pin LED sebagai output
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Mengaktifkan backlight pada LCD
lcd.setCursor(0, 0);
lcd.print("Berat: "); // Menampilkan teks "Berat: " pada baris pertama LCD
}
void loop() {
scale.set_scale(); // Set ulang faktor kalibrasi jika diperlukan
float berat = scale.get_units(10) / 420.00; // Menghitung berat dalam satuan yang diinginkan (misalnya kg)
lcd.setCursor(7, 0);
lcd.print(berat, 2); // Menampilkan nilai berat pada LCD dengan 2 angka desimal
if (berat > 1) { // Jika berat lebih dari 1 satuan (misalnya kg)
digitalWrite(BUZZER_PIN, HIGH); // Mengaktifkan Buzzer (berbunyi)
digitalWrite(LED_PIN, HIGH); // Mengaktifkan LED (menyala) (led menyala secara kedap-kedip)
tone(8, 262, 250); // Menghasilkan bunyi pada Buzzer dengan frekuensi 262 Hz selama 250 ms
delay(250); // Delay 250 ms
digitalWrite(LED_PIN, LOW); //mematikan led (led menyala secara kedap-kedip)
delay(250); // Delay 250 ms
} else {
digitalWrite(BUZZER_PIN, LOW); // Mematikan Buzzer (tidak berbunyi)
digitalWrite(LED_PIN, LOW); // Mematikan LED (tidak menyala)
noTone(8); // Mematikan bunyi pada Buzzer
}
delay(1000); // Memberi jeda 1 detik sebelum mengulang loop
}