/*
Nama : Selvia Margareta Sitompul
Npm : 203510467
Kelas : 7F
LAB IoT PROJEK UAS Tentang: Smart Door*/
// untuk mengendalikan motor servo menggunakan Arduino.
#include <Servo.h>//untuk menyertakan pustaka standar yang disertakan dengan Arduino IDE.
int Pir = 8;//memiliki arti bahwa sebuah variabel bernama Pir dengan tipe data int (integer) dideklarasikan, dan diberi nilai awal 8.
int statusPir = 0;//Jika gerakan terdeteksi, mengubah statusPir menjadi 0
Servo myservo;//untuk mengontrol motor servo pada papan Arduino. Motor servo digunakan untuk menggerakkan sesuatu ke posisi sudut tertentu.
void setup() {//Inisialisasi atau penyiapan awal dilakukan di sini
// put your setup code here, to run once:
Serial.begin(9600);//perintah yang menginisialisasi komunikasi serial pada Arduino dengan kecepatan baud rate 9600. Ini penting untuk berkomunikasi dengan komputer atau perangkat eksternal lainnya melalui kabel USB atau modul Bluetooth.
Serial.println("Smart Door");//Ini mencetak teks "Smart Door" ke terminal serial. Fungsi println digunakan untuk mencetak teks di baris baru (newline) pada terminal serial.
myservo.attach(6);// perintah yang menghubungkan objek Servo (dengan nama myservo) ke pin 6 pada papan Arduino. Ini menunjukkan bahwa motor servo yang akan dikendalikan oleh objek myservo terhubung ke pin 6.
pinMode(Pir, INPUT);//Perintah ini mengatur mode pin yang digunakan oleh sensor PIR. Di sini, Pir adalah variabel yang mungkin telah dideklarasikan sebelumnya dengan nilai pin tertentu, dan perintah ini mengatur pin tersebut sebagai input. Ini sesuai dengan penggunaan umum sensor PIR yang akan mendeteksi perubahan pada pin inputnya.
}
void loop() {//Kode utama (dieksekusi secara berulang)
// put your main code here, to run repeatedly:
statusPir = digitalRead(Pir);
//Jika statusPir sama dengan HIGH, maka kode di dalam blok kurung kurawal {} akan dijalankan. Ini berarti bahwa kondisi ini terpenuhi, dan kemungkinan besar ini menandakan bahwa sensor PIR mendeteksi gerakan atau adanya sumber panas yang sesuai dengan aturan pemrograman.
if(statusPir == HIGH){//Kode yang akan dijalankan jika statusPir adalah HIGH (tinggi)
myservo.write(45); // "Putar Servo ke kiri 45 derajat."
delay(1000);
myservo.write(0); // Turn Servo ke kiri to 0 degrees
delay(1000);
myservo.write(90); // "Putar Servo ke posisi tengah (90 derajat).
delay(1000);
Serial.println("Pintu Terbuka");
}else {//Jika statusPir tidak sama dengan HIGH, maka blok kode di dalam blok kurung kurawal {} tidak akan dijalankan, dan program akan melanjutkan ke bagian selanjutnya setelah struktur pengkondisian ini.
myservo.write(135); // Turn Servo Ke kanan 135 degrees
delay(1000);
myservo.write(180); // Turn Servo ke kanan 180 degrees
delay(1000);
myservo.write(90); // Turn Servo ke posisi center position (90 degrees)
delay(1000);
Serial.println("Pintu Tertutup");
}
delay(1000);
}