Arduino
Kasper#include <SoftwareSerial.h>
#include <Servo.h>
int tempPin = A0;
int servoPin = 9;
int btRxPin = 4;
int btTxPin = 2;
int relayPin = 3;
int atkLedPin = 5;
int ownerLedPin = 6;
int acLedPin = 7;
bool isRelayOn = false;
bool isAttacker = false;
bool isOwner = false;
bool isACOn = false;
bool fakeTemp = true;
bool doorOpen = false;
bool alarmTriggered = false;
SoftwareSerial bt(btRxPin,btTxPin);
Servo servoMotor;
void setup() {
Serial.begin(9600);
bt.begin(9600);
pinMode(relayPin, OUTPUT);
servoMotor.attach(servoPin);
}
void loop() {
if(getTemp() < 29) {
isACOn = false;
} else {
isACOn = true;
}
if (bt.available()){
String S = GetLine();
S.trim();
if(S == "ft 1"){
bt.write("OK!\n");
fakeTemp = true;
}
if(S == "ft 0"){
bt.write("OK!\n");
fakeTemp = false;
}
if(S == "sec attacker 1"){
bt.write("OK!\n");
isOwner = false;
isAttacker = true;
}
if(S == "sec owner 1"){
bt.write("OK!\n");
isOwner = true;
isAttacker = true;
}
if(S == "relay 1"){
bt.write("OK!\n");
isRelayOn = true;
}
if(S == "relay 0"){
bt.write("OK!\n");
isRelayOn = false;
}
if(S == "door 0"){
bt.write("OK!\n");
doorOpen = false;
}
if(S == "door 1"){
bt.write("OK!\n");
doorOpen = true;
}
}
if (Serial.available()){
String S = GetLineSerial();
S.trim();
if(S == "ft 1"){
Serial.write("OK!\n");
fakeTemp = true;
}
if(S == "ft 0"){
Serial.write("OK!\n");
fakeTemp = false;
}
if(S == "sec attacker 1"){
Serial.write("OK!\n");
isOwner = false;
isAttacker = true;
}
if(S == "sec owner 1"){
Serial.write("OK!\n");
isOwner = true;
isAttacker = true;
}
if(S == "relay 1"){
Serial.write("OK!\n");
isRelayOn = true;
}
if(S == "relay 0"){
Serial.write("OK!\n");
isRelayOn = false;
}
if(S == "door 0"){
Serial.write("OK!\n");
doorOpen = false;
}
if(S == "door 1"){
Serial.write("OK!\n");
doorOpen = true;
}
}
// CODE //
if(isOwner){
digitalWrite(ownerLedPin, HIGH);
digitalWrite(atkLedPin, LOW);
openDoor();
if(alarmTriggered) {
bt.write("(+) La alarma de seguridad ha sido desactivada. Procesando tarjeta...");
alarmTriggered = false;
}
bt.write("(!) Bienvenido! El acceso a su propiedad desde: PUERTA_PRINCIPAL fue realizado con exito. ");
bt.write("(!) La puerta se cerrara automaticamente en 5 segundos.... ");
delay(5000);
closeDoor();
}
// CODE //
if(isAttacker){
digitalWrite(ownerLedPin, LOW);
digitalWrite(atkLedPin, HIGH);
doorOpen = false;
bt.write("(!) Alguien intenta entrar en su propiedad a traves de: PUERTA_PRINCIPAL! He asegurado la puerta y he iniciado la secuencia de alarma, si fue usted, por favor escanee su tarjeta en el lector.");
alarmTriggered = true;
closeDoor();
}
if(isRelayOn) {
digitalWrite(relayPin, HIGH);
} else {
digitalWrite(relayPin, LOW);
}
if(doorOpen){
openDoor();
} else {
closeDoor();
}
}
bool openDoor() {
}
bool closeDoor(){
}
float getTemp(){
int value=analogRead(A0);
float temp =(4.8 * value * 100.0)/1024.0;
if(fakeTemp) {
return 31.2;
} else {
return temp;
}
}
String GetLine(){
String S = "" ;
if (bt.available()){
char c = bt.read();
while ( c != '\n'){
S = S + c ;
delay(25) ;
c = bt.read();
}
return( S) ;
}
}
String GetLineSerial(){
String S = "" ;
if (Serial.available()){
char c = Serial.read();
while ( c != '\n'){
S = S + c ;
delay(25) ;
c = Serial.read();
}
return( S) ;
}
}