Di era modern seperti sekarang, penerapan teknologi sederhana dalam kehidupan sehari-hari semakin banyak dilakukan untuk meningkatkan kenyamanan dan kebersihan. Salah satunya adalah tong sampah otomatis, yang dapat membuka tutupnya secara otomatis tanpa disentuh tangan. Proyek ini sangat cocok bagi kamu yang ingin belajar Arduino sambil menciptakan sesuatu yang bermanfaat.
Pada artikel kali ini, Kalilandak Info akan membagikan tutorial lengkap membuat tong sampah otomatis menggunakan sensor ultrasonik, Arduino Uno, dan servo motor. Proyek ini tidak hanya sederhana dan mudah dipahami pemula, tetapi juga bisa dijadikan tugas sekolah, ide lomba sains, atau bahkan solusi nyata di rumah dan kantor.
Yuk, simak langkah-langkahnya, mulai dari daftar komponen, skema rangkaian, kode program, hingga tips praktis untuk perakitannya!
Daftar komponen:
1.arduino nano
1.motor servo
1.sensor ultrasonic
1.led hijau 5mm
1.led merah 5mm
1.power suplay 5volt
Untuk code silahkan copy di bawah ini
/*
*
*/
#include <Servo.h> //Library untuk Servo
#define trigPin 7 //Set Trigger HCSR04 di Pin digital 12
#define echoPin 6 //Set Echo HCSR04 di Pin digital 13
#define MAX_DISTANCE 500 //Set jarak maksimal
//NewPing sonar(trigPin, echoPin, MAX_DISTANCE);
int LEDhijau = 3, LEDmerah = 2; //Set Pin LEDhijau dan LEDmerah
Servo myservo; //Buat object 1 buah motor servo
void setup() {
//Serial.begin (115200); //Kecepatan komunikasi serial
pinMode(trigPin, OUTPUT); //Set pin Trigger sebagai output
pinMode(echoPin, INPUT); //Set pin Echo sebagai input
pinMode(LEDmerah, OUTPUT); //Set LEDmerah sebagai output
pinMode(LEDhijau, OUTPUT); //Set LEDhijau sebagai output
myservo.attach(9); //Set servo pada pin PWM 9
}
void loop() {
int duration, jarak,posisi=0,i;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
jarak = (duration/2) / 29.1;
Serial.print(jarak);
Serial.println(" cm");
if(jarak<=15) // Jarak (Cm) dapat anda sesuaikan
{
digitalWrite(LEDhijau, LOW); //LEDhijau mati
digitalWrite(LEDmerah, HIGH); //LEDmerah hidup
myservo.write(180); //Posisi servo pada 180 derajat
delay(450); //Delay
digitalWrite(LEDmerah, LOW); //LEDmerah mati
myservo.write(90); //Posisi servo pada 90 derajat
delay(450); //Delay
digitalWrite(LEDmerah, HIGH); //LEDmerah hidup
myservo.write(0); //Posisi servo pada 0 derajat
delay(450); //Delay
digitalWrite(LEDmerah, LOW); //LEDmerah mati
myservo.write(90); //Posisi servo pada 90 derajat
}
else{ //Jika jarak lebih dari yang ditentukan
digitalWrite(LEDmerah, LOW); //LEDmerah mati
digitalWrite(LEDhijau, HIGH); //LEDhijau hidup
myservo.write(90); //Posisi servo pada 90 derajat
}
delay(450); //Delay
}