// Perintah library agar bisa menggunakan LCD I2C
#include <LiquidCrystal_I2C.h>
// Menginisialisasi alamat LCD ke 0x27 untuk layar 16 kolom dan 2 baris
LiquidCrystal_I2C lcd(0x27,16,2);
// Menginisialisasi letak pin
int sensorPir = 5;
int statusPir = 0; // status sensor PIR 0 == LOW, 1 == HIGH
int ledRed = 13;
int ledYellow = 11;
int ledGreen = 9;
int buzzerPin = 7;
// Kode dibawah hanya akan dijalankan sekali saja
void setup() {
/*
Serial.begin().
perintah agar bisa menampilkan teks ke layar komputer
Kecepatan untuk transfer data yang dipakai adalah 9600bps(bit per second)
*/
Serial.begin(9600);
Serial.println("Sistem Deteksi Gerak");
Serial.println("Rahmat");
lcd.init(); // Menghidupkan lcd
lcd.backlight(); // Menghidupkan lampu lcd
lcd.setCursor(0,0); // memindah penulisan ke kolom 0 baris 0
lcd.print(" Sistem "); // Menampilkan teks ke layar LCD
lcd.setCursor(0,1); // memindah penulisan ke kolom 0 baris 1
lcd.print(" Deteksi Gerak ");
// Menahan eksekusi kode selanjutnya agar layar tampil sebentar
delay(1000); //1 Detik == 1000 ms(millisecond)
/*
pinMode() adalah fungsi untuk menentukan
pin yang akan digunakan sebagai input atau output. */
pinMode(sensorPir, INPUT);
pinMode(ledRed, OUTPUT);
pinMode(ledYellow, OUTPUT);
pinMode(ledGreen, OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
// Kode dibawah akan dijalankan terus-menerus
void loop() {
// digitalRead() adalah fungsi untuk membaca input Digital.
statusPir = digitalRead(sensorPir);
if(statusPir == HIGH){
/*
digitalWrite() adalah fungsi untuk menentukan
nilai positif(HIGH) atau negatif(LOW) pada Output Digital.
Pada lampu led ini high berarti hidup dan low berarti mati.*/
digitalWrite(ledGreen, LOW);
// Hidupkan buzzer dengan frekuensi 500 Hz
tone(buzzerPin, 500);
// Menghapus teks di layar lcd
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Sensor Gerakan ");
lcd.setCursor(0,1);
lcd.print(" Ada Gerakan");
Serial.println("Ada Gerakan");
/*
Kode dibawah digunakan untuk membuat Lampu merah berkedip bergantian
sebanyak 10 kali dengan fungsi for.
*/
for(int i = 1; i <= 10;i++){
if(i % 2 != 0){
// membuat lampu led 1 menyala, jika nilai 'i' ganjil
digitalWrite(ledRed, HIGH);
}else{
// membuat lampu led 2 menyala, jika nilai 'i' genap
digitalWrite(ledYellow, HIGH);
}
// membuat lampu menyala beberapa saat dan tidak instan
delay(250);
// Ini akan mematikan lampu led
digitalWrite(ledRed, LOW);
digitalWrite(ledYellow, LOW);
}
// fungsi untuk mematikan buzzer
noTone(buzzerPin);
}else{
digitalWrite(ledRed, LOW);
digitalWrite(ledYellow, LOW);
digitalWrite(ledGreen, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Sensor Gerakan ");
lcd.setCursor(0,1);
lcd.print(" Tiada Gerakan");
Serial.println("Tidak Ada Gerakan");
}
// Jarak waktu antar eksekusi kode atau deteksi sensor
delay(1000); // 1 Detik == 1000 ms(millisecond)
}