Saltar la navegación

Programa

El programa a realizar será el siguiente:

/* defino algunas variables por comodidad y mejor entendimiento del programa

mirando la tabla se ve a que elemento  corresponde cada variable*/

int LDR, MB, SH, PIR, LE, A, C, MP, T;

//guarda el estado de la persiana

boolean persiana_subida=true;

void setup() {   

  // inicializamos las variables

  LDR = 1;
  MB = 1;
  SH = 2;
  PIR = 4;
  LE = 5;
  A = 6;
  C = 7;
  MP = 8; 
  T = 3; 

 //activamos el puerto serial para la depuracion

  Serial.begin(9600);
  pinMode(MB, OUTPUT);   
  pinMode(LE, OUTPUT); 
  pinMode(A, OUTPUT); 
  pinMode(C, OUTPUT);  
  pinMode(MP, OUTPUT);
  pinMode(SH, INPUT);  
  pinMode(PIR, INPUT); 
  pinMode(T, INPUT);   
 
}

void loop() {

  //programamos logica LDR       

  if (analogRead(1)> 900) { //indica que es de noche

    if (persiana_subida){//La persiana est´ subida y por tanto la bajamos

     digitalWrite(MP,HIGH); //Baja persianas
     delay(5000); //suponemos que las persianas tardan en bajar 5 segundos
     digitalWrite(MP,LOW);//para motor persianas
     persiana_subida=false; //para saber que la persiana esta abajo

    }

    digitalWrite(LE, HIGH); //enciende luces exteriores

  }

  else {

   if(! persiana_subida){//La periana esta bajada y por tanto la subimos

     digitalWrite(MP,HIGH); //Sube persianas 
     delay(5000); //suponemos que las persianas tardan en bajar 5 segundos
  digitalWrite(MP,LOW);//para motor persianas     persiana_subida=true;//para saber que la persiana esta arriba    }     digitalWrite(LE,LOW);//apagamos luces   }   //programamos logica detector humedad   if (digitalRead(SH)==1) {//Hay humedad    digitalWrite(MB, HIGH);//arranca la motobomba   }   else {     digitalWrite(MB, LOW);//para la motobomba   } //programamos logica detector presencia   if (digitalRead(PIR==1) && analogRead(LDR) >900){//Se detecta presencia y es de noche     digitalWrite(A, HIGH);//Activa alarma   }   else {   digitalWrite(A,LOW);  }  //programamos logica sensor temperatura  if (digitalRead(T)==1){   digitalWrite(C,HIGH); //enciende la caldera  }  else {  digitalWrite(C,LOW); //apaga la caldera  }  //mostramos lo que ocurre por monitor serial para poder depurar problemas  Serial.print("LDR=");   Serial.println(analogRead(1));   Serial.print("Detector Humedad=");   Serial.println(digitalRead(SH));   Serial.print("Detector Presencia=");   Serial.println(digitalRead(PIR));   Serial.print("Termostato=");   Serial.println(digitalRead(T));   delay (2000); //esperamos 2 segundos }