#include "HX711.h"
HX711 scale;
const int trigPin2 = 5; // Pin trigger sensor ultrasonik terhubung ke pin 9 Arduino
const int echoPin2 = 17; // Pin echo sensor ultrasonik terhubung ke pin 10 Arduino
const int trigPin1 = 16; // Pin trigger sensor ultrasonik terhubung ke pin 9 Arduino
const int echoPin1 = 4; // Pin echo sensor ultrasonik terhubung ke pin 10 Arduino
int relayPin = 27; // Pin yang terhubung ke relay
unsigned long previousMillis = 0;
const long interval = 3L * 60L * 60L * 1000L; // Set interval 3 jam dalam milidetik
const int relayActivationDuration = 3000; // Waktu relay aktif dalam milidetik (3 detik)
#define DISTANCE_THRESHOLD 50
float duration_us, distance_cm;
void setup() {
pinMode(relayPin, OUTPUT); // Set pin sebagai OUTPUT
Serial.begin(115200);
scale.begin(3, 2); // Inisialisasi HX711 dengan pin data (D3) dan pin clock (D2)
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
}
void loop() {
void WeightSensor();
void UltrasonicSensor1();
void UltrasonicSensor2();
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// Aktifkan relay
digitalWrite(relayPin, HIGH);
delay(relayActivationDuration); // Relay aktif selama 3 detik
// Matikan relay
digitalWrite(relayPin, LOW);
}
}
void UltrasonicSensor1() {
long duration, distance;
// Kirimkan pulsa ultrasonik
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
// Baca waktu tiba pulsa echo
duration = pulseIn(echoPin1, HIGH);
// Hitung jarak berdasarkan waktu tiba
distance = (duration / 2) / 29.1; // Faktor konversi untuk mengubah waktu (mikrodetik) ke jarak (cm)
// Tampilkan jarak dalam Serial Monitor
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
delay(1000); // Tunggu 1 detik sebelum membaca kembali
}
void UltrasonicSensor2() {
long duration, distance;
// Kirimkan pulsa ultrasonik
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
// Baca waktu tiba pulsa echo
duration = pulseIn(echoPin1, HIGH);
// Hitung jarak berdasarkan waktu tiba
distance = (duration / 2) / 29.1; // Faktor konversi untuk mengubah waktu (mikrodetik) ke jarak (cm)
// Tampilkan jarak dalam Serial Monitor
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
delay(1000); // Tunggu 1 detik sebelum membaca kembali
}
void WeightSensor() {
if (scale.is_ready()) {
long weight = scale.get_units(10); // Baca berat dalam gram, mengambil 10 bacaan rata-rata
Serial.print("Berat: ");
Serial.print(weight);
Serial.println(" gram");
} else {
Serial.println("HX711 tidak siap");
}
}