/*===========================================
SENSOR LAMPU OTOMATIS BERBASIS ARDUINO
PROJECT TO PT. BS. INDONESIA
alat dan bahan yang diperlukan:
1. Arduino Uno R3 1*pcs
2. Pir Motion Sensor (HC-SR501) 4*pcs
3. Relay 1 Channel 5V for Arduino 1*pcs
4. Perkabelan Sensor & Relay
===========================================*/
/*
Program ini dirancang untuk mengendalikan lampu otomatis dengan menggunakan sensor gerak PIR pada dua pintu yang berbeda.
Berikut adalah penjelasan lebih rinci:
1. Inisialisasi:
Program dimulai dengan mendefinisikan pin untuk sensor gerak masuk dan keluar pada pintu pertama (door1) dan pintu kedua (door2),
serta pin untuk mengendalikan relay yang akan mengontrol lampu.
2. Variabel Jumlah Orang (peopleCount):
Dideklarasikan variabel peopleCount untuk melacak jumlah orang di dalam ruangan.
Nilainya akan bertambah ketika ada gerakan masuk dan berkurang ketika ada gerakan keluar.
3. Setup:
Dalam fungsi setup(), pin-pin yang digunakan diatur sebagai input (untuk sensor),
atau output (untuk relay) sesuai kebutuhan.
4. Loop Utama:
Program berada dalam loop utama yang terus berjalan,
membaca status sensor gerak dan mengendalikan lampu berdasarkan kondisi yang terdeteksi.
5. Deteksi Gerakan Masuk:
Jika salah satu sensor gerak masuk pada pintu pertama atau kedua mendeteksi gerakan,
variabel peopleCount akan bertambah, menandakan bahwa ada orang yang masuk.
6. Deteksi Gerakan Keluar:
Jika salah satu sensor gerak keluar pada pintu pertama atau kedua mendeteksi gerakan dan peopleCount lebih dari 0,
maka peopleCount akan berkurang, menandakan bahwa ada orang yang keluar.
7. Kontrol Relay dan Lampu:
Relay diaktifkan jika peopleCount lebih dari 0, menyalakan lampu.
Sebaliknya, relay dimatikan jika tidak ada orang di dalam, mematikan lampu.*/
// BERIKUT UNTUK PROGRAMNYA
const int pirSensorInDoor1 = 2; // Pin sensor masuk pintu 1
const int pirSensorOutDoor1 = 3; // Pin sensor keluar pintu 1
const int relayPin = 4; // Pin relay
const int pirSensorInDoor2 = 5; // Pin sensor masuk pintu 2
const int pirSensorOutDoor2 = 6; // Pin sensor keluar pintu 2
int peopleCount = 0; // Jumlah orang yang ada di dalam
void setup() {
Serial.begin(9600);
pinMode(pirSensorInDoor1, INPUT);
pinMode(pirSensorOutDoor1, INPUT);
pinMode(pirSensorInDoor2, INPUT);
pinMode(pirSensorOutDoor2, INPUT);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW); // Matikan relay pada awalnya
}
void loop() {
int motionInDoor1 = digitalRead(pirSensorInDoor1);
int motionOutDoor1 = digitalRead(pirSensorOutDoor1);
int motionInDoor2 = digitalRead(pirSensorInDoor2);
int motionOutDoor2 = digitalRead(pirSensorOutDoor2);
if (motionInDoor1 == HIGH || motionInDoor2 == HIGH) {
// Orang masuk dari kedua pintu masuk
peopleCount++;
Serial.println("Seseorang masuk. Jumlah orang: " + String(peopleCount));
}
if (motionOutDoor1 == HIGH || motionOutDoor2 == HIGH) {
// Orang keluar dari kedua pintu keluar
if (peopleCount > 0) {
peopleCount--;
Serial.println("Seseorang keluar. Jumlah orang: " + String(peopleCount));
} else {
Serial.println("Tidak ada orang. Pintu ditutup.");
}
}
// Aktifkan relay jika ada orang di dalam
if (peopleCount > 0) {
digitalWrite(relayPin, HIGH);
Serial.println("Relay aktif. Lampu menyala.");
} else {
digitalWrite(relayPin, LOW);
Serial.println("Relay mati. Lampu mati.");
}
delay(500); // Hindari pembacaan yang terlalu cepat
}