#include "HX711.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Pin konfigurasi HX711
const int DOUT_PIN = 4;
const int SCK_PIN = 16;
// Pin konfigurasi DHT
const int DHT_PIN = 2; // Sesuaikan dengan pin yang digunakan untuk DHT
// Pin LED
const int LOAD_CELL_LED_PIN = 12; // Sesuaikan dengan pin yang digunakan untuk LED pada load cell
const int TEMPERATURE_LED_PIN = 14; // Sesuaikan dengan pin yang digunakan untuk LED pada suhu
// set the LCD number of columns and rows
int lcdColumns = 16;
int lcdRows = 2;
// set LCD address, number of columns and rows
// if you don't know your display address, run an I2C scanner sketch
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
// Faktor skala yang perlu diatur sesuai hasil kalibrasi
const float CALIBRATION_FACTOR = 0.42; // Sesuaikan nilai ini dengan hasil kalibrasi Anda
HX711 scale;
// Inisialisasi objek DHT
DHT dht(DHT_PIN, DHT22);
void setup() {
Serial.begin(9600);
scale.begin(DOUT_PIN, SCK_PIN);
// Kalibrasi HX711 dengan faktor skala yang sesuai
scale.set_scale(CALIBRATION_FACTOR);
// initialize LCD
lcd.init();
// turn on LCD backlight
lcd.backlight();
// Inisialisasi sensor DHT
dht.begin();
// Setup pin LED sebagai output
pinMode(LOAD_CELL_LED_PIN, OUTPUT);
pinMode(TEMPERATURE_LED_PIN, OUTPUT);
}
void loop() {
if (scale.is_ready()) {
// Baca data dari sensor HX711 dan tampilkan di Serial Monitor
float weight = scale.get_units(1); // Mendapatkan rata-rata dari 1 bacaan
Serial.print("Berat: ");
Serial.print(weight);
Serial.println(" gram");
// Baca data dari sensor DHT
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Tampilkan nilai suhu dan kelembaban di Serial Monitor
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.print("C, Kelembaban: ");
Serial.print(humidity);
Serial.println("%");
// set cursor to first column, first row
lcd.setCursor(0, 0);
// clears the display to print new message
//lcd.clear();
// set cursor to first column, second row
lcd.print("Berat: ");
lcd.print(weight);
lcd.print(" gram");
// set cursor to first column, second row
lcd.setCursor(0, 1);
lcd.print("S: ");
lcd.print(temperature);
lcd.print("C ");
lcd.print("H: ");
lcd.print(humidity);
lcd.print("%");
// Kontrol LED berdasarkan berat
if (weight < 1000) {
digitalWrite(LOAD_CELL_LED_PIN, HIGH); // Nyalakan LED jika berat di bawah 1000 gram
} else {
digitalWrite(LOAD_CELL_LED_PIN, LOW); // Matikan LED jika berat 1000 gram atau lebih
}
// Kontrol LED berdasarkan suhu
if (temperature < 30.0) {
digitalWrite(TEMPERATURE_LED_PIN, HIGH); // Nyalakan LED jika suhu di bawah 30 derajat Celsius
} else {
digitalWrite(TEMPERATURE_LED_PIN, LOW); // Matikan LED jika suhu 30 derajat Celsius atau lebih
}
//delay(1000);
// Tunggu beberapa detik sebelum membaca ulang
//delay(200);
} else {
Serial.println("HX711 tidak siap, periksa koneksi!");
}
}