#include <HX711.h>
#include <Servo.h>
// Konfigurasi HX711
#define HX711_DT 2 // Pin D2 untuk DT
#define HX711_SCK 3 // Pin D3 untuk SCK
HX711 scale;
// Konfigurasi Servo
Servo servo1; // Servo untuk PIR di D4
Servo servo2; // Servo untuk Load Cell
#define SERVO1_PIN 9 // Pin D9 untuk Servo 1
#define SERVO2_PIN 10 // Pin D10 untuk Servo 2
// Konfigurasi PIR
#define PIR1_PIN 4 // Pin D4 untuk PIR 1
#define PIR2_PIN 5 // Pin D5 untuk PIR 2
void setup() {
// Inisialisasi Serial Monitor
Serial.begin(9600);
Serial.println("Inisialisasi dimulai...");
// Inisialisasi HX711
scale.begin(HX711_DT, HX711_SCK);
Serial.println("HX711 siap!");
// Inisialisasi Servo
servo1.attach(SERVO1_PIN);
servo2.attach(SERVO2_PIN);
Serial.println("Servo terhubung!");
// Inisialisasi PIR
pinMode(PIR1_PIN, INPUT);
pinMode(PIR2_PIN, INPUT);
Serial.println("PIR siap!");
// Posisi awal servo
servo1.write(0);
servo2.write(0);
Serial.println("Servo diposisikan ke awal.");
// Load Cell dalam mode mati
scale.power_down(); // Matikan Load Cell di awal
Serial.println("HX711 dimatikan untuk menghemat daya.");
}
void loop() {
// Periksa PIR1 (di D4)
int pir1Status = digitalRead(PIR1_PIN);
if (pir1Status == HIGH) {
Serial.println("PIR1 mendeteksi gerakan!");
servo1.write(90); // Gerakkan Servo 1
delay(500);
servo1.write(0); // Kembalikan ke posisi awal
} else {
Serial.println("PIR1 tidak mendeteksi gerakan.");
}
// Periksa PIR2 (di D5)
int pir2Status = digitalRead(PIR2_PIN);
if (pir2Status == HIGH) {
Serial.println("PIR2 mendeteksi gerakan!");
scale.power_up(); // Hidupkan Load Cell
delay(500); // Tunggu stabilisasi
// Baca berat dari Load Cell
if (scale.is_ready()) {
float weight = scale.get_units(10); // Ambil rata-rata dari 10 sampel
Serial.print("Berat: ");
Serial.println(weight);
// Jika berat < 2.5 kg, gerakkan Servo 2
if (weight < 2.5) {
Serial.println("Berat di bawah 2.5 kg, menggerakkan Servo 2...");
servo2.write(90); // Gerakkan Servo 2
delay(500);
servo2.write(0); // Kembalikan ke posisi awal
} else {
Serial.println("Berat tidak memenuhi kriteria.");
}
} else {
Serial.println("HX711 tidak siap! Periksa koneksi.");
}
// Matikan Load Cell setelah pembacaan
scale.power_down();
Serial.println("HX711 dimatikan setelah membaca berat.");
} else {
Serial.println("PIR2 tidak mendeteksi gerakan.");
}
delay(200); // Delay untuk stabilitas pembacaan
}
Loading
st-nucleo-l031k6
st-nucleo-l031k6