// incluir el codigo de la bibioteca para la PANTALLA
#include <LiquidCrystal.h>
// inicializar la biblioteca con los numeros de los pines de interfaz
LiquidCrystal lcd(27, 26, 25, 24, 23, 22);
///////////////////////////
const int sensorTemperatura = A0;//temperatura Ventilador
const float baselineTemp = 21.0;//Ventilador
int transistorPin = 11;//Ventilador
char rxChar;//Variable para recibir datos BLUETOOH
#include <Servo.h>
Servo servo1;//Puerta
Servo servo2;//Cortina
//Servos FIN
char bloqueo = 'b';
int desa = 1;
int blockVen = 1;
//ALARMA SEGURIDAD///////
int encenderSensor = 7;
int senalSensor = 6;
int piezoUno = 8;
int piezoDos = 9;
String estadoAlarma;
////////////////
//LUCES ESTERIORES
int luzExt1 = 28;
int luzExt2 = 29;
int luzExt3 = 30;
int encenderSensorLuz = 31;
int senalSensorLuz = 32;
//////////////////
void setup() {
//pantalla lcd////////
lcd.begin(16, 2);
Serial.begin(9600);//Comunicación a 9600 baudios
servo1.attach(44);//Puerta
servo2.attach(43);//Cortina
for (int i = 45; i <= 53; i++) {//FOCOS
pinMode(i, OUTPUT);
}
pinMode(transistorPin, OUTPUT);//Ventialdor
digitalWrite(transistorPin, LOW);//Ventialdor
//luces exteriores
pinMode(encenderSensor, OUTPUT);
pinMode(senalSensor, INPUT);
pinMode(luzExt1, OUTPUT);
pinMode(luzExt2, OUTPUT);
pinMode(luzExt3, OUTPUT);
//////////////////////////
////ALARMA SEGURIDAD///////
pinMode(encenderSensor, OUTPUT);
pinMode(senalSensor, INPUT);
pinMode(piezoUno, OUTPUT);
pinMode(piezoDos, OUTPUT);
//////////////////////////
}
void loop() {
if ( Serial.available() ) {//Si Bluetooh esta CONECTADO
rxChar = Serial.read();//Recibe la variable enviada por el Teléfono
switch (rxChar) {
case 'Z': digitalWrite(45, HIGH);//Foco Cuarto 1
break;
case 'z': digitalWrite(45, LOW);//Foco Cuarto 1
break;
case 'Y': digitalWrite(46, HIGH);//Foco Cuarto 2
break;
case 'y': digitalWrite(46, LOW);//Foco Cuarto 2
break;
case 'S': digitalWrite(47, HIGH);//Foco Balcon
break;
case's': digitalWrite(47, LOW);//Foco Balcon
break;
case 'V': digitalWrite(48, HIGH);//Foco Baño
break;
case 'v': digitalWrite(48, LOW);//Foco Baño
break;
case 'T': digitalWrite(49, HIGH);//Foco Sala
break;
case 't': digitalWrite(49, LOW);//Foco Sala
break;
case 'U': digitalWrite(50, HIGH);//Foco Cocina
break;
case 'u': digitalWrite(50, LOW);//Foco Cocina
break;
case 'W': digitalWrite(51, HIGH);//Foco Comedor
break;
case 'w': digitalWrite(51, LOW);//Foco Comedor
break;
case 'X': digitalWrite(52, HIGH);//Foco Recibidor
break;
case 'x': digitalWrite(52, LOW);//Foco Recibidor
break;
case 'K': digitalWrite(53, HIGH);//Foco Pasillo
break;
case 'k': digitalWrite(53, LOW);//Foco Pasillo
break;
case 'r': servo1.write(90);//Puerta
break;
case 'R': servo1.write(0);//Puerta
break;
case 'P': servo2.write(130);//Cortina
break;
case 'p': servo2.write(0);//Cortina
break;
case 'O':
digitalWrite(transistorPin, HIGH); //Ventilador Manual
blockVen = 0;
break;
case 'o':
analogWrite(transistorPin, LOW); //Ventilador Manual
break;
blockVen = 1;
case 'L':
for (int i = 45; i <= 53; i++) {//On todos los Focos
encenderLuces();
digitalWrite( i, HIGH);
}
bloqueo = 'a';
break;
case 'l':
for (int i = 45; i <= 53; i++) {//Of todos los Focos
digitalWrite( i, LOW);
apagarLuces();
bloqueo = 'b';
}
break;
//luces FUERA automatico
case 'N':
analogWrite(encenderSensorLuz, 200);
break;
case 'n':
analogWrite(encenderSensorLuz, LOW);
break;
/////////LUCES FUERA MANUAL
case 'J':
encenderLuces();
bloqueo = 'a';
break;
case 'j':
apagarLuces();
bloqueo = 'b';
//ENCENDER SEGURIDAD DENTRO
break;
case 'M':
digitalWrite(encenderSensor, HIGH); // encender sensor
for (int i = 0; i <= 20; i++) {
delay(1000);
estadoAlarma = "Calibrando..";
}
estadoAlarma = "ACTIVADA";
desa = 0;
break;
case 'm':
digitalWrite(encenderSensor, LOW);
digitalWrite(piezoUno, LOW);
digitalWrite(piezoDos, LOW);
estadoAlarma = "DESACTIVADA";
desa = 1;
break;
}
}
//////// luces exteriores
if (bloqueo == 'b') {
delay(500);
if (digitalRead(senalSensorLuz) == LOW) {
encenderLuces();
delay(5000);
}
else if (digitalRead(senalSensorLuz) == HIGH) {
apagarLuces();
}
}
////////////////////////////////////////////
///sistema seguridad/////////////////
if (desa == 0) {
if (digitalRead(encenderSensor) == HIGH && digitalRead(senalSensor) == LOW) {
tone(piezoUno, 349); // pin, frecuencia
tone(piezoDos, 140);
estadoAlarma = "INTRUSO";
Serial.print("Movimiento detectado \n");
delay(1000);
}
}
if (desa == 1) {
estadoAlarma = "DESACTIVADA";
noTone(piezoUno); // pin, frecuencia
noTone(piezoDos);
}
////////////////////////////////////////77
pantalla(estadoAlarma);
delay(15);
}////// FIN LOOP
// funcion encender/apagar luces exteriores
void encenderLuces() {
digitalWrite(luzExt1, HIGH);
digitalWrite(luzExt2, HIGH);
digitalWrite(luzExt3, HIGH);
}
void apagarLuces() {
digitalWrite(luzExt1, LOW);
digitalWrite(luzExt2, LOW);
digitalWrite(luzExt3, LOW);
}
//////////////////////////////////
///funcion de la pantalla
void pantalla(String estadoAlarma) {
lcd.setCursor(0, 0);
lcd.print("Tem:");
lcd.setCursor(5, 0);
//leer la entrada analigica del sensor
int sensorValor = analogRead(sensorTemperatura);
// convierte la lectura del ADC a voltaje
float voltage = (sensorValor / 1024.0) * 5.0;
//convertir el voltaje a temperatura en grados
float temperatura = (voltage - .5) * 100;
if (blockVen == 1){
if (temperatura < baselineTemp) {
analogWrite(transistorPin, LOW);//Ventilador Automatico
} else if (temperatura >= baselineTemp + 2 && temperatura < baselineTemp + 4) {//Ventilador Automatico
analogWrite(transistorPin, 25);
} else if (temperatura >= baselineTemp + 4 && temperatura < baselineTemp + 6) {//Ventilador Automatico
analogWrite(transistorPin, 50);
} else if (temperatura >= baselineTemp + 6) {//Ventilador Automatico
analogWrite(transistorPin, 75);
}
}
lcd.print(temperatura);
lcd.setCursor(0, 1);
lcd.print("Seg:");
lcd.setCursor(5, 1);
lcd.print(estadoAlarma);
delay(800);
}
/////////////////////////
Pogramacion
Suscribirse a:
Entradas (Atom)






0 comentarios:
Publicar un comentario