#include <Stepper.h>
int trigPin = 12;
int echoPin = 11;
int pirPin = 10;
int ledPin = 9;
int buzzPin = 8;
int statusPir = LOW;
int gerakanPir;
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 2, 3, 4, 5);
void setup() {
// put your setup code here, to run once:
myStepper.setSpeed(80); // Sesuaikan dengan kecepatan yang diinginkan
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(pirPin, INPUT); //set pirPin menjadi pin input
pinMode(ledPin, OUTPUT); //set ledPin menjadi pin output
pinMode(buzzPin, OUTPUT);
Serial.begin(9600);
Serial.print("Distance from the object :\n");
}
void loop() {
// put your main code here, to run repeatedly:
int distance;
int duration;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration=pulseIn(echoPin,HIGH);
distance = duration * 0.0344/2;
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
if (distance <= 100) {
// Jika jarak kurang dari 10 cm, putar motor ke arah tertentu (sesuai kebutuhan)
Serial.println("PINTU TERBUKA");
myStepper.step(stepsPerRevolution); // Ubah jumlah langkah sesuai kebutuhan Anda
delay(5000); // Tambahkan delay sesuai kebutuhan
} else {
// Jika jarak lebih besar dari atau sama dengan 10 cm, tidak ada gerakan motor
myStepper.step(-stepsPerRevolution);
Serial.println("PINTU TERTUTUP");
delay(5000); // Tambahkan delay sesuai kebutuhan
}
gerakanPir = digitalRead(pirPin); //membaca sinyal dari pir ketika ada gerakan
if(gerakanPir==HIGH){ //mengecek kondisi pir, jika mendeteksi gerakan maka skrip di bawah if akan dieksekusi secara berulang-ulang saat pir tetap mendeteksi gerakan
digitalWrite(ledPin, HIGH);
digitalWrite(buzzPin, HIGH);
delay(500);
//menyalakan led ketika terdapat gerakan
if(statusPir==LOW){ //mengecek status dari pir apakah low atau high, jika low skrip di bawah if akan dieksekusi sekali ketika pir mendeteksi gerakan di awal
Serial.println("Ada Gerakan!!!"); //menampilkan peringatan ke serial monitor bahwa gerakan terdeteksi
statusPir=HIGH; //mengubah status pir dari low ke high
}
}
else { //jika pir tidak mendeteksi gerakan skrip akan dieksekusi
digitalWrite(ledPin, LOW); //mematikan led karena tidak ada gerakan
if(statusPir==HIGH){ //mengecek status pir, jika high skrip di dalam if akan dieksekusi
Serial.println("Tidak Ada Gerakan!"); //menampilkan peringatan bahwa gerakan tidak terdeteksi
statusPir=LOW; //mengubah status dari pir dari high ke low
}
}
}