Thursday, 2 April 2026

Contoh Aplikasi Arduino "TEMPAT SAMPAH OTOMATIS" dengan Sensor Proximity dan Servo



Program sederhana Arduino untuk membuat tempat sampah otomatis bisa kalian praktikkan tinggal copy paste programnya berikut ini. 
Sebelumnya jika mau ngecek hasil videonya silahkan klik link video berikut ini yaa, sudah saya posting di youtube.

1. Satu buah arduino, 1 servo sg90 dan 1 sensor proximity d80nk, dirakit menjadi satu tempat sampah otomatis pake program ini : 

_________________

#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);
}


2.  Satu buah arduino, dirakit untuk 2 tempat sampah otomatis, jadi masing2 tempat sampah cukup menggunakan 1 kontroler arduino, bisa pake program ini : 


#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
}


Berikut ini dokumen foto hasil project tempat sampah sensor otomatis :




Hasil uji coba ada di video berikut ini, silahkan klik 






Semoga bermanfaat !!
by Mening Maker