Pogramacion

// 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);
}
/////////////////////////

0 comentarios:

Publicar un comentario