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 }