Problema con casa domotica

Hola, estoy haciendo un proyecto para la escuela que consiste en la creacion de una casa domotica, yo hice las funciones por separado, temperatura, control de servo por luz i alarma. Al momento de unir las funciones como soy relativamente nuevo en arduino no me funcionavan todas pido ayuda para hacer que se cumplan todas les dejo los programas aqui abajo , muchas gracias.

Alarm_arduino.ino

// definimos los pines y variables a utilizar
const int trigPin = 1;
const int echoPin = 2;
const int buzzer = 3;
const int ledPin = 4;
int i;

// definimos l variable
long duration;
int distance;
int safetyDistance;

void setup() {
pinMode(trigPin, OUTPUT); //  trigPin como Output
pinMode(echoPin, INPUT); //    echoPin como entrada Input
pinMode(buzzer, OUTPUT); //   Buzzer como salida
pinMode(ledPin, OUTPUT); //   Led como salida
Serial.begin(9600); // Iniciamos la comunicación serial
}

void loop() {
// inicializar trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

// trigPin activo por 10 micro segundos
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

// Leemos echoPin, retornamos el tiempo de viaje de la onda de sonido en microsegundos
duration = pulseIn(echoPin, HIGH);

// Calculamos la distancia
distance= duration*0.034/2;

safetyDistance = distance;
// avaluamos el rango de acercamiento
if (safetyDistance <= 10){
  for (i=0; i<=5; i++) {
   tone(buzzer, 540,3000);
   delay(200);
   tone(buzzer, 740,3000);
   delay(200);
   digitalWrite(ledPin, HIGH);
   delay(300);
   digitalWrite(ledPin, LOW);
  }  

  digitalWrite(ledPin, HIGH);
}
else{
  digitalWrite(buzzer, LOW);
  digitalWrite(ledPin, LOW);
}

// Imprimimos la distancia en el monitor serial
Serial.print("Distance: ");
Serial.println(distance);
}

Light.ino

#include <Servo.h>

Servo servo1;
int pot = A1;
int angulo =0 ; 
void setup (){
servo1.attach(8);
pinMode(pot, INPUT);
Serial.begin(9600);

}

void loop(){
  int lectura = analogRead(pot);
  Serial.println(lectura);
  if ( lectura <= 500){
   
  angulo = angulo +1;
  if (angulo >= 180){
  angulo = 180 ;}
  
  if ( angulo <= 180 ){
  servo1.write(angulo); }    
}
if (lectura > 500) {
angulo = angulo -1 ;
if (angulo <= 0){
angulo = 0 ;}
if (angulo >= 0){
servo1.write(angulo);}
}
delay (5);
}

Temperatura_LM35.ino

/*
Realizado por http://Untitled.es 
Descubre nuevos tutoriales todas las semanas.

Puedes utilizar este ejemplo para lo que te apetezca: 
- Modificarlo 
- Venderlo 
- Leerlo en forma de cuento antes de dormir

Incluso, si decides añadirlo a tu proyecto, puedes compartir la fuente.
*/

// Entrada del sensor LM35.
int sensorTemperatura = 0;
// Pin para el LED rojo.
int ledRojo = 5;
//Pin para el LED azul.
int ledAzul = 6; 

// Long guarda números enteros pero con valores mayores.
long miliVolts;
long temperatura;
int brillo;

void setup(){
  // Iniciamos la comunicación serial con una velocidad de 9600.
  Serial.begin(9600);
  
  // Declaramos los pins 5 y 6 de salida.
  pinMode(ledRojo, OUTPUT);
  pinMode(ledAzul, OUTPUT);
}

void loop(){
  miliVolts = (analogRead(sensorTemperatura) * 5000L) / 1023; // Añadir la L para indicar que trabajamos con variables Long
  temperatura = miliVolts / 10; // Como hemos visto en la fórmula.
  
  // Convertimos el valor de la temperatura para usar analogWrite.
  // Escamos la variable temperatura / Valor mínimo del que partimos / Valor  máximo al que llegaremos / Valor del color inicial / Valor del color final).
  brillo = map (temperatura, 18, 21, 0, 255);
  
  // Limitamos el rango con los valores máximos del brillo.
  brillo = constrain(brillo, 0, 255); 
  
  // Modificamos el color del LED RGBs
  analogWrite(ledAzul, (255 - brillo));
  // Se hace esto para que sean contrarias las numeraciones.
  analogWrite(ledRojo,  brillo); 

  
  // Mostramos en el Monitor serial.
  Serial.print("Temperatura: ");
  Serial.print(temperatura);
  Serial.println(" grados");
  
  // Pausamos el proceso 1 segundo.
  delay(1000); 
}

Alarma_Arduino.ino (1.34 KB)

LIGHT.ino (496 Bytes)

Temperatura-LM35.ino (1.65 KB)

La solución para eso es fácil si ya dominas los 3 sketch individualmente. Ya sabes que un sketch consta de

  1. librerías
  2. Variables globales y definición de objetos
  3. setup()
  4. loop()

Ahora tienes 3 sketchs con repetición de las 4 cosas. Sentido común dicta que no puedes repetir cosas? No puedes repetir variables. No debes repetir librerías. No puedes tampoco usar los mismos pines de un sketch en el sketch general. O sea si hay dos sketch que usan el pin 2 en alguna tendras que usar otro disponible.

Entonces comienza ordenadamente en un nuevo sketch copiando todas las librerías

  1. Asegúrate que ninguna se repita como ya dije
  2. Copia todas las variables globales de las 3 y sus objetos (tal vez no sepas que son objetos) pero por ejemplo. Este es un objeto
Servo servo1;

si hubieran dos sketch con la misma definición pues uno sería servo1 y otra servo2 x ejemplo.

Terminado esto pasamos al setup

  1. El setup. 3.1 Seguramente en las 3 defines el uso de puerto serie asi que ahora lo haremos 1 sola vez 3.2 no importa el orden pero hay que definir pines asi que toma una hoja y anota cada pin en los sketch y ordenadamente los vas asignando a los disponibles de 2 a 13 sin usar 0 y 1 que estan reservados. Lo mismo con los A0...A5 analógicos. Veo que has sido cuidadoso y en algun sketch usaste A0 y en otro A1. Bien!! mas fácil entonces

si queda algo mas en el setup lo agregas.. no debe faltar nada.

  1. El loop Esta es la tarea tal vez mas complicada pero no te alarmes Mi consejo es que uses rutinas y cada acción de un sketch se tranforeme en una rutina que luego será llamada. Eso te dará claridad a la hora de entender como funciona todo

Ejemplo: Alarma_arduino consulta el sensor ultrasónico que bien puedes consultar en una rutina que devuelva el dato de la distancia. Light y LM35 como sketchs consultas dos valores analógicos asi que tmb podrias hacerlo asi. Ojo con light porque luego hay muchas comparaciones y yo hablo de la lectura del sensor.

finalmente integras todo lo restante.

Veamos como te va con esta expliación y nos consultas x los problemas que surjan.

Un lujo la explicación @surbyte. No se podría haber hecho más didáctico.