/*
Kodingan di atas merupakan implementasi untuk mengukur berat pada beban yang di terima oleh kendaraan
menggunakan sensor HX711 (sensor berat), menampilkan hasilnya pada layar LCD,
menghidupkan LED dan buzzer ketika berat melebihi 180 kg,
serta menghasilkan bunyi pada buzzer selama 1000 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
#define LED_PIN1 6 // 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
pinMode(LED_PIN1, OUTPUT); // Mengatur pin LED sebagai output
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Mengaktifkan backlight pada LCD
lcd.setCursor(0, 0); // Pengaturan posisi teks
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 > 30) { // Jika berat lebih dari 1 satuan (misalnya kg)
digitalWrite(BUZZER_PIN, HIGH); // Mengaktifkan Buzzer (berbunyi)
digitalWrite(LED_PIN, HIGH); // Mengaktifkan LED (on) (led on secara kedap-kedip)
digitalWrite(LED_PIN1, LOW); // Mengaktifkan LED (of)
tone(8, 1000); // Menghasilkan bunyi pada Buzzer dengan frekuensi 262 Hz selama 250 ms
lcd.setCursor(0,1); //Seting Kursor LCD di kolom 0 baris 1
lcd.print("KURANGI BEBAN");//LCD menampilkan KURANGI BEBAN
} else {
digitalWrite(BUZZER_PIN, LOW); // Mematikan Buzzer (tidak berbunyi)
digitalWrite(LED_PIN, LOW); // Mematikan LED (of)
digitalWrite(LED_PIN1, HIGH); // Mengaktifkan LED (on)
lcd.setCursor(0,1); //Seting Kursor LCD di kolom 0 baris 1
lcd.print("BEBAN STANDAR ");//LCD menampilkan BEBAN STANDAR
noTone(8); // Mematikan bunyi pada Buzzer
}
delay(1000); // Memberi jeda 1 detik sebelum mengulang loop
}