#include <Servo.h>
Servo servoku;
#define TRIGH_PIN 11
#define ECHO_PIN 10
#define SERVO_PIN 9
int sudut = 0;
float jarak;
long durasi;
void setup ()
{
Serial.begin (9600) ;
pinMode (TRIGH_PIN, OUTPUT) ;
pinMode (ECHO_PIN, INPUT) ;
pinMode (SERVO_PIN, OUTPUT) ;
delay (1000) ;
servoku.attach (SERVO_PIN) ;
//kasih delay dikit biar gak langsung jalan atau indikator led kalau mau
}
//membuat fungsi baru untuk membuat operasi perhitungan jarak dari sensor ultrasonik
void hitungjarak ()
{
digitalWrite(TRIGH_PIN, HIGH) ;
delayMicroseconds (10) ;
digitalWrite (TRIGH_PIN, LOW) ;
delayMicroseconds (8) ;
durasi = pulseIn (ECHO_PIN, HIGH); // menerima suara ultrasonic
jarak = (durasi / 2 ) / 29.1; //mengubah durasi menjadi jarak (cm)
Serial.println(jarak);
}
void loop ()
{
//Perulangan untuk cek kondisi sensor dan menggerakkan servo untuk membuka tong sampah
hitungjarak();
if (jarak <= 20)
{
for (sudut = 0; sudut<= 180; sudut+=1)
{
servoku.write (sudut);
delay(15);
}
delay (3000);
for (sudut = 180; sudut >= 0; sudut -= 1)
{
servoku.write (sudut);
delay (15);
}
}
}