Alarma de seguridad simple para casa domótica.

Necesito ayuda con mi proyecto de domótica, en especial con la parte de programación de la alarma de seguridad.
La casa domótica va a ser controlada mediante bluetooth. La alarma de seguridad va ha constar de un zumbador y una bombilla a 12V conectados ambos en paralelo a un relé y un interruptor magnético que sera el sensor.
Quiero que cuando la alarma este desactivada y se abra la puerta a la que esta conectado el interruptor magnético, la alarma no suene pero en cuanto le llegue un "10" mediante bluetooth se active la alarma y cuando se abran las puertas empiecen a sonar intermitentemente el zumbador y la bombilla en paralelo pero que si se cierra el interruptor magnético, la alarma no pare de sonar hasta que yo la desactive enviandole una "J" por bluetooth.
Es posible que sea una tonteria de duda en términos de código pero teniendo cuenta de que es mi primer proyecto de Arduino, es normal que quizás pueda tener dudas de ese calibre :smiley:
Si ves posible ayudarme con esta parte de mi código te lo agradecería de veras.
Un saludo, José Luis Pérez

PS: Otra pequeña duda que tengo es respecto a las fotoresistencias y las termoresistencias, que rango de luz y calor es el mas óptimo para que funcionen correctamente estas?

Gracias de nuevo, un saludo.

JoseLuisPerez, bienvenido.

  1. Supongo que como la gran mayoría no has leído las normas del foro? Ellas dices que debes hacer tu investigación en google o este mismo foro de arduino, donde hay muchos ejemplos similares al tuyo. Tómalos como punto de partida de tu proyecto.

  2. Cuando encuentres información y comiences con tu proyecto, mostrando códigos (usando los tags) y los esquemas correspondientes ya sean a mano alzada o con programas, iremos aconsejando y aportando para enriquecerlo o corregir fallas.
    Hasta tanto haz una busqueda en GOOGLE : Arduino Alarmas o Arduino Alarm y ve cómo comenzar.

Estaremos atentos a tu progreso!!.

  1. en tu título por favor edita [AYUDA] suficiente con lo demás.

  2. No entiendo el tipo de alarma asistida por BT que quieres hacer pero cada cual con sus proyectos. No hay problema con lo que deseas. mas que Alarmas como te pedi buscar, busca BT, con algun ejemplo.
    Empieza por ahi. A enviar comandos y verlos en el serial monitor. Justamente esos comandos que mencionas '10' y 'J'

PS: Otra pequeña duda que tengo es respecto a las fotoresistencias y las termoresistencias, que rango de luz y calor es el mas óptimo para que funcionen correctamente estas?

Investiga, pero una LDR (fotoresistencia) tiene una respuesta muy variable. Solo se usa para detectar luz/no luz y los puntos intermedios son complicados sin un marco de referencia.
La termoresistencias hay de dos tipos NTC (coefiiciente negativo) o PTC (coeficiente positivo) una si sube la temperatura baja la resistencia NTC y la PTC es directa con la temperatura, sube la temp sube la R.

Para que usar termoresistencias con los sensores que hay disponibles? LM35, DS18B20?
Tienes que investigar JoseLuis!!!

Hola surbyte, muchas gracias por responder a mi duda, te cuento:
La verdad es que ya llevo tiempo buscando bastante por internet y he encontrado varios tipos de alarmas pero no veo ninguna que pueda acercarse a lo que yo necesito, basicamente mi duda es como hacer que cuando este sonando la alarma y el interruptor magnético se cierre y vuelva a dar "1" la alarma no se apague, quiero que siga sonando hasta que yo la apague enviandole una "J" via bluetooth.
A ver si me explico... yo desde el BT simplemente quiero activar y desactivar la alarma, cuando la alarma ese activada y se abra el interruptor magnético, que suene pero si esta desactivada y se abre el interruptor magnético que no pase nada.

// CÓDIGO PARA LA ALARMA (POR ACABAR).
     if(dato == "10") {
         estadoAlarma = digitalRead(Interruptormag);
         if(estadoAlarma == '1') {
            digitalWrite(PinIn4, LOW);
            Serial.println("Alarma Desactivada");
         }
         if(estadoAlarma == '0') {
             digitalWrite(PinIn4, HIGH);
             delay(500);
             digitalWrite(PinIn4, LOW);
             delay(500);
           }
            Serial.println("Alarma activada");
         }
      }
      if(dato == "J") {
         digitalWrite(PinIn4, LOW);
         Serial.println("Alarma desactivada");
      }

Esto es lo que he conseguido sacar en claro hasta ahora sobre la parte de la alarma pero no consigo saber como hacer lo que te he comentado antes..

Respecto a la termoresistencia (NTC), he estado investigando y creo que ya he solucionado esta parte de código, te la adjunto y me dices que te parece:

// CÓDIGO PARA LA ILUMINACIÓN EXTERIOR.
  valor_sensor = analogRead(Fotoresistencia); 
  luz = (5.0 * valor_sensor * 100.0)/1024.0; 
  Serial.print(luz);  
  Serial.println(" Luz");             
  delay(300);                       
  
  if (luz <= 490)   //Si la resistencia que produce el LDR es menor o igual que 490
  {
    digitalWrite (PinIn6, LOW);  //El led se apaga
  }
  if (luz > 490)   //Si es mayor que 490
  {
    digitalWrite (PinIn6, HIGH);  //El led se eniende
  }

Y, finalmente, respecto a la termoresistencia:

// CÓDIGO PARA EL SISTEMA DE SEGURIDAD DE LA COCINA.
  //Se calcula la temperatura
 
  //Primero la Vout del divisor
  Vout=(Vin/1024)*(analogRead(Termoresistencia));
 
  //Ahora la resistencia de la NTC
  Rntc=(Vout*Rfija)/(Vin-Vout);
 
  //Y por último la temperatura en Kelvin
  TempK = Beta/(log(Rntc/R25)+(Beta/T0));
 
  //de kelvin a Celsius
  TempC = TempK-273.15;
 
  //se muestra por puerto serie
  Serial.println();
  Serial.print("LA TEMPERATURA DE LA NTC ES DE ");
  Serial.print(TempC);
  Serial.println(" GRADOS CELSIUS");
  Serial.println();
 
  //Ahora las comparaciones para las salidas
  if(TempC > 30)
  {
  digitalWrite(PinIn8, HIGH);
  }
  else 
  {
   digitalWrite(PinIn8, LOW);
  } 
  //Un delay para fijar el tiempo de muestra en el puerto, en este caso son 500 milisegundos
  delay(500);

He sacado los códigos de estas paginas:

Y respecto a los sensores que me has puesto, los he estado mirando y si que parece que sean mas cómodos de utilizar pero, sería posible hacerlo con la fotoresistencia y la termoresistencia? Es que ya las tengo compradas y en casa.. jajaja

Muchas gracias, espero tu respuesta :slight_smile:

Al menos progresas y ya pones avances y eso es bueno.

tienes el BT? Porque todo pasa por ahi. Lo demas es simple.
Otra cosa importante, no dices con que Arduino vas a trabajar.

Si si, el tema bluetooth me funciona perfectamente.
Disculpa, utilizo la Arduino Leonardo.
Gracias :slight_smile:

Nadie tiene la amabilidad de hecharme una mano con esta duda?

surbyte:
Al menos progresas y ya pones avances y eso es bueno.

tienes el BT? Porque todo pasa por ahi. Lo demas es simple.
Otra cosa importante, no dices con que Arduino vas a trabajar.

Surbyte me puedes explicar como puedo hacer la alarma por favor?
Sigo investigando y no encuentro un ejemplo que se adeque a mi duda, todos los que encuentro la alarma deja de sonar cuando se cierra la ventana y a mi eso no mi interesa, quiero que siga sonando aun que se cierre la ventana hasta que yo no la pare.

Gracias de nuevo.

Pon el ejemplo que mas se parezca salvo lo que ya has dicho que no hace como tu quieres.

surbyte:
Pon el ejemplo que mas se parezca salvo lo que ya has dicho que no hace como tu quieres.

Recuerda usar los tags correspondientes para links o código en este caso.
Ahora miro tu enlace

Jose, de verás ese es tu ejemplo?
Es solo activar un led con un contacto?
Es básico y esta en los ejemplos del IDE, no los miraste?

Bueno partamos de tu ejemplo:

//Esquema para nuestra alarma simple con Arduino
const int sensorpin = 2; //Especificamos que el sensor ira unido al pin 2
const int ledpin = 13; //El pin 13 ira destinado para el LED
int estadosensor = 0; //Especificamos el estado inicial del sensor (apagado)
void setup() {
    pinMode(ledpin, OUTPUT); //Marcamos el pin del LED como salida
    pinMode(sensorpin, INPUT); //El pin del sensor debe ser una entrada
}

void loop() {
     estadosensor = digitalRead(sensorpin); //Leer el estado del sensor
     //Si el estado es alto, es decir, si esta activado se encendera el LED de alarma
     if (estadosensor == HIGH) {
        digitalWrite(ledpin, HIGH);
     }
     else { //Mientras el sensor este apagado el pin estara apagado
        digitalWrite(ledpin, LOW);
     }
}

Ahora agregamos una variable bool o sea si o no true o false

alarmaON se llama la variable

// Alarma modificada para Jose Luis
const int sensorpin = 2; //Especificamos que el sensor ira unido al pin 2
const int ledpin = 13; //El pin 13 ira destinado para el LED
int estadosensor = 0; //Especificamos el estado inicial del sensor (apagado)
bool alarmaON = false; // y le decimos que esta apagada.

void setup() {
    pinMode(ledpin, OUTPUT); //Marcamos el pin del LED como salida
    pinMode(sensorpin, INPUT); //El pin del sensor debe ser una entrada
}

void loop() {
     estadosensor = digitalRead(sensorpin); //Leer el estado del sensor
     //Si el estado es alto, es decir, si esta activado se encendera el LED de alarma
     if (estadosensor == HIGH) {
        alarmaON = true;
     }
     else { //Mientras el sensor este apagado el pin estara apagado
        alarmaON = false;
     }
}

Bueno ahora el código no hace aparentemente nada, porque falta agregar el código BT
Cuando lo hagas recuerda que alarmaON estar en 1 o 0 según este o no abierta la puerta.

Intenta agregar esa parte del código y lo posteas acá.

Primero de todo, gracias por tu respuesta.
No he acabado de entender bien el tema de la variable bool, se supone que añadiendo esta variable cuando la alarma este activada y se abra la puerta, esta sonará pero cuando se vuelva a cerrar dejara de sonar hasta que yo la apague?
He intentado añadir el código que me has proporcionado al mio pero no creo que sea correcto del todo... ( la parte de la declaración de variables y el void setup no te los añado ya que el fallo tiene que estar en esta parte, el resto esta correcto).

//CÓDIGO PARA LA ALARMA (POR ACABAR).
     if(dato == "10") {
         estadosensor = digitalRead(Interruptormag);  //Leer el estado del sensor.
         if(estadosensor == HIGH) {
            alarmaON = true;
         }
         else {                                      //Mientras el sensor este apagado el pin estara apagado
            alarmaON = false;
         }
      }
      if(dato == "J") {
         digitalWrite(PinIn4, LOW);
         Serial.println("Alarma desactivada");
      }
       dato="";  // Declaramos la variable "vacía" para volver a guardar de nuevo caracteres y compararlos con cada uno de los casos.

Otra cosa que le quería añadir a la alarma y no se como es que cuando la alarma esté sonando, suene intermitentemente (como una alarma real). Esto se puede hacer añadiendole un for dentro del if(dato == "10") no?

En parte si. La variable bool solo recuerda ahora si la alarma esta ON o OFF (prendida o apagada)
Aun no agregué nada del BT porque no vi tu código completo de BT
faltan cosas a tu código BT. Cuando lo vea completo te hago la modificación para que todo funcione.

#include <Servo.h>
#include <SoftwareSerial.h>
#include <math.h>

SoftwareSerial mySerial(10,11); // RX, TX.
String dato;
Servo servopersiana;                                                                                
Servo servopuerta;                                                                 
Servo servogaraje;                                                               
int PinIn1 = 0;                // Pin que controla la luz del dormitorio. 
int PinIn2 = 1;                // Pin que controla la luz del baño.
int PinIn3 = 4;                // Pin que controla la luz de la cocina. 
int PinIn4 = 5;                // Pin que corresponde al relé que controla el zumbador y la luz de la alarma en paralelo.                                              
int PinIn5 = 6;                // Pin que corresponde al relé que controla la luz del garaje.                                                                          
int PinIn6 = 7;                // Pin que corresponde al relé que controla la luz exterior.                                                                            
int PinIn7 = 8;                // Pin que corresponde al relé que controla la luz del comedor.                                                                         
int PinIn8 = 9;                // Pin que controla el sistema de seguridad de la cocina (ventilador + termoresistencia).                                               
int LuzArmario = 13;                                                                                             
int Interruptormag = 14;       // Pin que controla el interruptor magnético (Pin 14 = A0).                                                                           
int Fotoresistencia = A1;                                                                                                 
int Termoresistencia = A2;                                                                                                
int estadosensor = 0;
bool alarmaON = false;
int termoresist;
int fotoresist;
int pos = 0;
int luz = 0;       
int valor_sensor = 0;

//Escala de Avisos
int escala = 2;
 
//Variable para la temperatura de disparo
double tempMin = 0.0;
 
//Datos para las ecuaciones
float Vin = 5.0;     // [V]       Tensión alimentación del divisor
float Rfija = 1000;  // [ohm]     Resistencia fija del divisor
float R25 = 2800;    // [ohm]     Valor de NTC a 25ºC
float Beta = 3900.0; // [K]      Parámetro Beta de NTC
float T0 = 293.15;   // [K]       Temperatura de referencia en Kelvin
float Vout = 0.0;    // [V]       Variable para almacenar Vout
float Rntc = 0.0;    // [ohm]     Variable para NTC en ohmnios
float TempK = 0.0;   // [K]       Temperatura salida en Kelvin
float TempC = 0.0;   // [ºC]      Temperatura salida en Celsius

void setup()
 {
  servopersiana.attach(2);
  servopuerta.attach(3); 
  servogaraje.attach(12);
  pinMode(PinIn1, OUTPUT);
  pinMode(PinIn2, OUTPUT);
  pinMode(PinIn3, OUTPUT);
  pinMode(PinIn4, OUTPUT);
  pinMode(PinIn5, OUTPUT);
  pinMode(PinIn6, OUTPUT);
  pinMode(PinIn7, OUTPUT);
  pinMode(PinIn8, OUTPUT);
  pinMode(LuzArmario, OUTPUT);
  pinMode(Interruptormag, INPUT);
  pinMode(Fotoresistencia, INPUT);
  pinMode(Termoresistencia, INPUT);
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  mySerial.println("Bluetooth disponible");
}

void loop() {
  while (mySerial.available()) { 
    delay(10);
     if (mySerial.available() > 0) {
      char c = mySerial.read();           
      dato += c;                             
      
  if (dato.length() > 0) {                 
  
     if(dato == "1") {                       
       for(pos = 0; pos < 180; pos += 1)    
        {                                    
          servopersiana.write(pos);          
          delay(25);                        
          Serial.println("Persiana abajo");
        } 
     }
     if(dato == "A") {
        for(pos = 180; pos >= 1; pos -= 1)   
        {                                    
          servopersiana.write(pos);          
          delay(25);                         
          Serial.println("Persiana arriba");
        } 
     }
     if(dato == "2") {                       
       for(pos = 0; pos < 150; pos += 1)     
        {                                   
          servopuerta.write(pos);          
          delay(25);                        
          Serial.println("Puerta abierta");
        } 
     }
     if(dato == "B") {
       for(pos = 150; pos >= 1; pos -= 1)    
        {                                   
          servopuerta.write(pos);           
          delay(25);                         
          Serial.println("Puerta cerrada");
        }
     }
     if(dato == "3") {                       
       for(pos = 0; pos < 180; pos += 1)    
        {                                 
          servogaraje.write(pos);            
          delay(25);                      
          Serial.println("Garaje abierto");
        } 
     }
     if(dato == "C") {
       for(pos = 180; pos >= 1; pos -= 1)   
        {                                   
          servogaraje.write(pos);           
          delay(25);                         
          Serial.println("Garaje cerrado");
        }
     }
     if(dato == "4") {
         digitalWrite(PinIn5, HIGH);
         Serial.println("Luz de garaje encendida");
     }
     if(dato == "D") {
         digitalWrite(PinIn5, LOW);
         Serial.println("Luz de garaje apagada");
     }
     if(dato == "5") {
         digitalWrite(PinIn7, HIGH);
         Serial.println("Luz comedor encendida");
     }
     if(dato == "E") {
         digitalWrite(PinIn7, LOW);
         Serial.println("Luz comedor apagada");
     } 
     if(dato == "6") {
         digitalWrite(PinIn1, HIGH);
         Serial.println("Luz del dormitorio encendida");
     }
     if(dato == "F") {
         digitalWrite(PinIn1, LOW);
         Serial.println("Luz del dormitorio apagada");
     }
     if(dato == "7") {
         digitalWrite(PinIn2, HIGH);
         Serial.println("Luz del baño encendida");
     }
     if(dato == "G") {
         digitalWrite(PinIn2, LOW);
         Serial.println("Luz del baño apagada");
     }
     if(dato == "8") {
         digitalWrite(PinIn3, HIGH);
         Serial.println("Luz de la cocina encendida");
     }
     if(dato == "H") {
         digitalWrite(PinIn3, LOW);
         Serial.println("Luz de la cocina apagada");
     }
     if(dato == "9") {
         digitalWrite(LuzArmario, HIGH);
         Serial.println("Luz del armario encendida");
     }
     if(dato == "I") {
         digitalWrite(LuzArmario, LOW);
         Serial.println("Luz del armario apagada");
     }
 
     //CÓDIGO PARA LA ALARMA (POR ACABAR).
     if(dato == "10") {
         estadosensor = digitalRead(Interruptormag);  //Leer el estado del sensor.
         if(estadosensor == HIGH) {
            alarmaON = true;
         }
         else {                                      //Mientras el sensor este apagado el pin estara apagado
            alarmaON = false;
         }
      }
      if(dato == "J") {
         digitalWrite(PinIn4, LOW);
         Serial.println("Alarma desactivada");
      }
       dato="";  // Declaramos la variable "vacía" para volver a guardar de nuevo caracteres y compararlos con cada uno de los casos.  
 
  // CÓDIGO PARA LA ILUMINACIÓN EXTERIOR.
  valor_sensor = analogRead(Fotoresistencia); 
  luz = (5.0 * valor_sensor * 100.0)/1024.0; 
  Serial.print(luz);  
  Serial.println(" Luz");             
  delay(300);                       
  
  if (luz <= 490)   
  {
    digitalWrite (PinIn6, LOW);  
  }
  if (luz > 490)   //Si es mayor que 490
  {
    digitalWrite (PinIn6, HIGH);  
  }
  
  // CÓDIGO PARA EL SISTEMA DE SEGURIDAD DE LA COCINA.
  //Se calcula la temperatura
 
  //Primero la Vout del divisor
  Vout=(Vin/1024)*(analogRead(Termoresistencia));
 
  //Ahora la resistencia de la NTC
  Rntc=(Vout*Rfija)/(Vin-Vout);
 
  //Y por último la temperatura en Kelvin
  TempK = Beta/(log(Rntc/R25)+(Beta/T0));
 
  //de kelvin a Celsius
  TempC = TempK-273.15;
 
  //se muestra por puerto serie
  Serial.println();
  Serial.print("LA TEMPERATURA DE LA NTC ES DE ");
  Serial.print(TempC);
  Serial.println(" GRADOS CELSIUS");
  Serial.println();
 
  //Ahora las comparaciones para las salidas
  if(TempC > 30)
  {
  digitalWrite(PinIn8, HIGH);
  }
  else 
  {
   digitalWrite(PinIn8, LOW);
  } 
  delay(500);

      }
   }
 } 
}

Aqui tienes :slight_smile:

surbyte:
Cuando lo vea completo te hago la modificación para que todo funcione.

Surbyte ya te he proporciando todo el código.
Muchas gracias.

#include <Servo.h>
#include <SoftwareSerial.h>
#include <math.h>

SoftwareSerial mySerial(10,11); // RX, TX.
String dato;
Servo servopersiana;                                                                         
Servo servopuerta;                                                     
Servo servogaraje;                                                           
int PinIn1 = 0;                // Pin que controla la luz del dormitorio. 
int PinIn2 = 1;                // Pin que controla la luz del baño.
int PinIn3 = 4;                // Pin que controla la luz de la cocina. 
int PinIn4 = 5;                // Pin que corresponde al relé que controla el zumbador y la luz de la alarma en paralelo.                                              
int PinIn5 = 6;                // Pin que corresponde al relé que controla la luz del garaje.                                                                          
int PinIn6 = 7;                // Pin que corresponde al relé que controla la luz exterior.                                                                            
int PinIn7 = 8;                // Pin que corresponde al relé que controla la luz del comedor.                                                                         
int PinIn8 = 9;                // Pin que controla el sistema de seguridad de la cocina (ventilador + termoresistencia).                                               
int LuzArmario = 13;                                                                                              
int Interruptormag = 14;                                                                       
int Fotoresistencia = A1;                                                                                               
int Termoresistencia = A2;                                                                                        
int estadosensor = 0;
bool alarmaON = false;
int termoresist;
int fotoresist;
int pos = 0;
int luz = 0;       
int valor_sensor = 0;
#define RST 18                  //Encendido del Modulo
#define KEY 17

//Escala de Avisos
int escala = 2;
 
//Variable para la temperatura de disparo
double tempMin = 0.0;
 
//Datos para las ecuaciones
float Vin = 5.0;     // [V]       Tensión alimentación del divisor
float Rfija = 1000;  // [ohm]     Resistencia fija del divisor
float R25 = 2800;    // [ohm]     Valor de NTC a 25ºC
float Beta = 3900.0; // [K]      Parámetro Beta de NTC
float T0 = 293.15;   // [K]       Temp de referencia en Kelvin
float Vout = 0.0;    // [V]       Variable para almacenar Vout
float Rntc = 0.0;    // [ohm]     Variable para NTC en ohm
float TempK = 0.0;   // [K]       Temp salida en Kelvin
float TempC = 0.0;   // [ºC]      Temp salida en Celsius

void setup()
 {
  servopersiana.attach(2);
  servopuerta.attach(3); 
  servogaraje.attach(12);
  pinMode(RST, OUTPUT);
  pinMode(KEY, OUTPUT);
  pinMode(PinIn1, OUTPUT);
  pinMode(PinIn2, OUTPUT);
  pinMode(PinIn3, OUTPUT);
  pinMode(PinIn4, OUTPUT);
  pinMode(PinIn5, OUTPUT);
  pinMode(PinIn6, OUTPUT);
  pinMode(PinIn7, OUTPUT);
  pinMode(PinIn8, OUTPUT);
  pinMode(LuzArmario, OUTPUT);
  pinMode(Interruptormag, INPUT);
  pinMode(Fotoresistencia, INPUT);
  pinMode(Termoresistencia, INPUT);
   // Estado inicial
  digitalWrite(RST, LOW);
  // Modo Comunicacion
  digitalWrite(KEY, LOW); 
   
  // Encendemos el modulo.
  digitalWrite(RST, HIGH);
  mySerial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  mySerial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  mySerial.flush();
  mySerial.println("Bluetooth disponible");
  delay(500);
}

void loop() {
  while (mySerial.available()) { 
    delay(10);
     if (mySerial.available() > 0) {
      char c = mySerial.read();   
      dato += c;      
      
  if (dato.length() > 0) {                   
  
     if(dato == "1") { 
       for(pos = 0; pos < 180; pos += 1)    
        {                                   
          servopersiana.write(pos);        
          delay(25);                       
          Serial.println("Persiana abajo");
        } 
     }
     if(dato == "A") {
        for(pos = 180; pos >= 1; pos -= 1)   
        {             
          servopersiana.write(pos);          
          delay(25);       
          Serial.println("Persiana arriba");
        } 
     }
     if(dato == "2") { 
       for(pos = 0; pos < 150; pos += 1)
        {                
          servopuerta.write(pos);     
          delay(25);                        
          Serial.println("Puerta abierta");
        } 
     }
     if(dato == "B") {
       for(pos = 150; pos >= 1; pos -= 1)   
        {                                   
          servopuerta.write(pos);           
          delay(25);                       
          Serial.println("Puerta cerrada");
        }
     }
     if(dato == "3") {   
       for(pos = 0; pos < 180; pos += 1)     
        {                                   
          servogaraje.write(pos);           
          delay(25);                         
          Serial.println("Garaje abierto");
        } 
     }
     if(dato == "C") {
       for(pos = 180; pos >= 1; pos -= 1)  
        {                                   
          servogaraje.write(pos);           
          delay(25);  
          Serial.println("Garaje cerrado");
        }
     }
     if(dato == "4") {
         digitalWrite(PinIn5, HIGH);
         Serial.println("Luz de garaje encendida");
     }
     if(dato == "D") {
         digitalWrite(PinIn5, LOW);
         Serial.println("Luz de garaje apagada");
     }
     if(dato == "5") {
         digitalWrite(PinIn7, HIGH);
         Serial.println("Luz comedor encendida");
     }
     if(dato == "E") {
         digitalWrite(PinIn7, LOW);
         Serial.println("Luz comedor apagada");
     } 
     if(dato == "6") {
         digitalWrite(PinIn1, HIGH);
         Serial.println("Luz del dormitorio encendida");
     }
     if(dato == "F") {
         digitalWrite(PinIn1, LOW);
         Serial.println("Luz del dormitorio apagada");
     }
     if(dato == "7") {
         digitalWrite(PinIn2, HIGH);
         Serial.println("Luz del baño encendida");
     }
     if(dato == "G") {
         digitalWrite(PinIn2, LOW);
         Serial.println("Luz del baño apagada");
     }
     if(dato == "8") {
         digitalWrite(PinIn3, HIGH);
         Serial.println("Luz de la cocina encendida");
     }
     if(dato == "H") {
         digitalWrite(PinIn3, LOW);
         Serial.println("Luz de la cocina apagada");
     }
     if(dato == "9") {
         digitalWrite(LuzArmario, HIGH);
         Serial.println("Luz del armario encendida");
     }
     if(dato == "I") {
         digitalWrite(LuzArmario, LOW);
         Serial.println("Luz del armario apagada");
     }
 
     //CÓDIGO PARA LA ALARMA (POR ACABAR).
     if(dato == "10") {
         estadosensor = digitalRead(Interruptormag); 
         if(estadosensor == HIGH) {
            alarmaON = true;
         }
         else {               
            alarmaON = false;
         }
      }
      if(dato == "J") {
         digitalWrite(PinIn4, LOW);
         Serial.println("Alarma desactivada");
      }
       dato="";  // Declaramos la variable "vacía" para volver a guardar de nuevo caracteres y compararlos con cada uno de los casos.  
 
  // CÓDIGO PARA LA ILUMINACIÓN EXTERIOR.
  valor_sensor = analogRead(Fotoresistencia); 
  luz = (5.0 * valor_sensor * 100.0)/1024.0; 
  Serial.print(luz);  
  Serial.println(" Luz");             
  delay(300);                       
  
  if (luz <= 490)   //Si la resistendia que produce el ldr es menor o igual que 490
  {
    digitalWrite (PinIn6, LOW);  //El led se apaga
  }
  if (luz > 490)   //Si es mayor que 490
  {
    digitalWrite (PinIn6, HIGH);  //El led se eniende
  }
  
  // CÓDIGO PARA EL SISTEMA DE SEGURIDAD DE LA COCINA.
  //Se calcula la temperatura
 
  //Primero la Vout del divisor
  Vout=(Vin/1024)*(analogRead(Termoresistencia));
 
  //Ahora la resistencia de la NTC
  Rntc=(Vout*Rfija)/(Vin-Vout);
 
  //Y por último la temperatura en Kelvin
  TempK = Beta/(log(Rntc/R25)+(Beta/T0));
 
  //de kelvin a Celsius
  TempC = TempK-273.15;
 
  //se muestra por puerto serie
  Serial.println();
  Serial.print("LA TEMPERATURA DE LA NTC ES DE ");
  Serial.print(TempC);
  Serial.println(" GRADOS CELSIUS");
  Serial.println();
 
  //Ahora las comparaciones para las salidas
  if(TempC > 30)
  {
  digitalWrite(PinIn8, HIGH);
  }
  else 
  {
   digitalWrite(PinIn8, LOW);
  } 
  delay(500);

      }
   }
 } 
}

Te vuelvo a pasar el código ya que he hecho algunos cambios más.
Gracias :slight_smile: