#include <Servo.h>
const int pinSensor = 2;
const int pinServo = 9;
Servo myservo;
// Pengaturan kecepatan (semakin besar angka delay, semakin pelan)
int kecepatan = 0;
void setup() {
pinMode(pinSensor, INPUT);
myservo.attach(pinServo);
myservo.write(0); // Posisi awal tertutup
Serial.begin(9600);
}
void loop() {
int deteksi = digitalRead(pinSensor);
if (deteksi == LOW) {
Serial.println("Membuka perlahan...");
// Gerakan membuka dari 0 ke 90 derajat secara bertahap
for (int sudut = 0; sudut <= 60; sudut++) {
myservo.write(sudut);
delay(kecepatan); // Jeda tiap 1 derajat
}
delay(3000); // Biarkan sampah masuk (5 detik)
Serial.println("Menutup perlahan...");
// Gerakan menutup dari 90 kembali ke 0 derajat secara bertahap
for (int sudut = 60; sudut >= 0; sudut--) {
myservo.write(sudut);
delay(kecepatan);
}
}
delay(100);
}
#include <Servo.h>
// Definisi Pin Sensor
const int pinSensorA = 2;
const int pinSensorB = 3;
// Objek Servo
Servo servoA;
Servo servoB;
// Definisi Pin Servo
const int pinServoA = 4;
const int pinServoB = 5;
const int pinbuzA = 12;
const int pinbuzB = 13;
// Variabel status sensor (D80NK output LOW saat mendeteksi objek)
int statusA = HIGH;
int statusB = HIGH;
void setup() {
// Inisialisasi Servo
servoA.attach(pinServoA);
servoB.attach(pinServoB);
// Posisi awal tertutup (0 derajat)
servoA.write(5);
servoB.write(5);
// Inisialisasi Sensor (D80NK menggunakan internal pull-up lebih stabil)
pinMode(pinSensorA, INPUT);
pinMode(pinSensorB, INPUT);
pinMode(pinbuzA, OUTPUT);
pinMode(pinbuzB, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Baca sinyal dari sensor
statusA = digitalRead(pinSensorA);
statusB = digitalRead(pinSensorB);
// LOGIKA TEMPAT SAMPAH A
if (statusA == LOW) { // Jika mendeteksi objek
Serial.println("Sensor A Mendeteksi Sampah!");
servoA.write(60); // Buka 60 derajat
digitalWrite(pinbuzA, HIGH); // bunyi nyala alarm
delay(2000); // Tunggu 3 detik sebelum menutup kembali
} else {
servoA.write(5); // Tetap tertutup
digitalWrite(pinbuzA, LOW);
Serial.println("Menutup tong A!");
}
// LOGIKA TEMPAT SAMPAH B
if (statusB == LOW) { // Jika mendeteksi objek
Serial.println("Sensor B Mendeteksi Sampah!");
servoB.write(80); // Buka 80 derajat
digitalWrite(pinbuzB, HIGH); // bunyi nyala alarm
delay(2000); // Tunggu 3 detik sebelum menutup kembali
} else {
servoB.write(5); // Tetap tertutup
digitalWrite(pinbuzB, LOW);
Serial.println("Menutup tong B!");
}
delay(100); // Delay kecil untuk stabilitas pembacaan
}