#define pinPiezo 8
#define pinPir 7
#define pinLed 13
int valPir;
int waktuKalibrasi=3; //Detik
int statusPir=LOW;
int statusPiezo=0; //Untuk menyalakan Piezo
char data=0; //Untuk data bluetooth (HC-05)
void setup() {
pinMode(pinPir,INPUT);
pinMode(pinPiezo,OUTPUT);
pinMode(pinLed,OUTPUT);
Serial.begin(9600);
kalibrasi();
}
void loop() {
alarm();
bacaData();
}
/*====================================FUNGSI========================================*/
void alarm(){
valPir=digitalRead(pinPir);
/*SENSOR PIR*/
if(valPir==HIGH) { //PIR mendeteksi, menyalakan led dan piezo
digitalWrite(pinLed, HIGH); //LED ON
if (statusPir==LOW) {
Serial.println(" ");
// Serial.println("Motion detected!");
Serial.write(45); //Mengirim data serial dalam byte
char bytesSent=Serial.write("Motion Detected !");
statusPir=HIGH;
statusPiezo=1; //Inisiasi status Piezo menjadi 1/ON
}
else{}
}
else{ //Piezo masih menyala, walau PIR tidak mendeteksi
digitalWrite(pinLed, LOW); //LED OFF
if(statusPir==HIGH){
Serial.println(" ");
//Serial.println("Motion ended.");
Serial.write(45);
char bytesSent=Serial.write("");
statusPir=LOW;
}
else{}
}
/*SUARA*/
if(statusPiezo==1){
digitalWrite(pinPiezo, HIGH);
}
else if(statusPiezo==0){
digitalWrite(pinPiezo, LOW);
}
}
/*BLUETOOTH*/
void bacaData(){
if(Serial.available()>0){ //Kirim data jika sedang tersedia
data = Serial.read(); //Baca data
Serial.println(" ");
Serial.println(data);
if(data=='1'){ //ON
digitalWrite(pinPiezo, HIGH);
statusPiezo=1;
}
else if(data=='0'){ //OFF
digitalWrite(pinPir, LOW);
statusPiezo=0;
}
}
}
void kalibrasi(){
Serial.print("KALIBRASI");
for(byte i=0;i<waktuKalibrasi;i++){
Serial.print(".");
lampu();
}
digitalWrite(pinLed,LOW);
Serial.println(" ");
Serial.println("=SELESAI=");
}
void lampu(){
for(short i=0;i<1;i++){
digitalWrite(pinLed,LOW);
delay(500);
digitalWrite(pinLed,HIGH);
delay(500);
}
}
Comments