#include <SoftwareSerial.h>
SoftwareSerial HM10(2, 3); // RX = 2, TX = 3
#define LEDverde 9
#define LEDrosu 10
#define buzzer 6
#define claxon 7
#define avarii 8
#define PIR 12
//char statusArmare = "dezarmat";
int statusArmare;
char appData;
String inData = "";
void setup()
{
Serial.begin(9600);
Serial.println("HM10 serial started at 9600");
HM10.begin(9600); // set HM10 serial at 9600 baud rate
pinMode(claxon, OUTPUT); // releu claxon
pinMode(avarii, OUTPUT); // releu avarii
pinMode(PIR, INPUT); // PIR
pinMode(4, INPUT); // PIR
digitalWrite(LEDverde, HIGH); // switch ON GREEN LED
digitalWrite(claxon, LOW); // switch OFF RELAY
digitalWrite(avarii, LOW); // switch OFF RELAY
}
void loop()
{
HM10.listen(); // listen the HM10 port
while (Serial.available() > 0) { // if HM10 sends something then read
appData = Serial.read();
inData = String(appData); // save the data in string format
// Serial.write(appData);
}
if (Serial.available()) { // Read user input if available.
delay(10);
Serial.write(Serial.read());
}
//dezarmare
if ( inData == "D") {
statusArmare = 0; // dezarmat
Serial.println("dezarmat");
HM10.println("dezarmat");
digitalWrite(LEDrosu, LOW);
digitalWrite(LEDverde, HIGH);
digitalWrite(avarii, LOW);
digitalWrite(claxon, LOW);
claxoneaza();
delay(100);
claxoneaza();
}
//armare
if ( inData == "A") {
statusArmare = 1; //armat
Serial.println("armat");
HM10.println("armat");
digitalWrite(LEDverde, LOW);
digitalWrite(LEDrosu, HIGH);
claxoneaza();
}
//alarma
if ( inData == ""){
if(statusArmare == 1){
Serial.println("statusArmare = 1");
while ((digitalRead(PIR)==HIGH) && (digitalRead(4) == LOW)){
statusArmare = 2; //alarma
Serial.println("statusArmare = 2");
Serial.println("ALARMA - miscare");
HM10.println("ALARMA - miscare");
break;
}
while (digitalRead(4) == HIGH) {
statusArmare = 0;
digitalWrite(avarii, LOW);
Serial.println("statusArmare = 0");
break;
}
}
if (statusArmare == 2){
claxoneaza();
digitalWrite(avarii, HIGH);
delay(500);
if ((digitalRead(PIR)==LOW) || (inData = "D") || (digitalRead(4) == HIGH)) {
statusArmare = 1; //alarma
Serial.println("miscare oprita");
HM10.println("miscare oprita");
}
}
}
inData = "";
}
//functii
int claxoneaza(){
if (inData == "D") {
statusArmare == 0;
}
tone(buzzer,2000,200);
digitalWrite(claxon, HIGH);
delay(200);
digitalWrite(claxon, LOW);
}