Este programa es un gran caos de varios códigos como bien has explicado pero tu principal problema es que no has sido ordenado.
- cuando presentas algo en un foro, lo haces al menos identando debidamente el código para que sea fácil su lectura. Con el IDE haces Ctrl+T o vas a herramientas ->Auto Formato
- Es importante entender que haces y por esa razón los códigos deben comentarse porque de lo contrario nosotros tenemos que perder mas tiempo para responderte.
Yo ahora puedo modificar cosas a mi gusto pero mira estos errores que aún no resuelven tu problema
tienes un Servo en el pin 9 y luego defines el pin 9 para un pinLed3. Entonces que haces con el servo o el sensor LDR?
Cosas como esta
if (value == HIGH)
{
digitalWrite(buzzer2, HIGH);
delay(12000);
digitalWrite(buzzer2, LOW);
delay(4000);
}
no se pueden usar donde hay sensores porque por 18000 mseg el sistema quedará detenido cuando esa variable value este en HIGH.
Solución para esto es usar millis(). Ve a Documentación => indice de temas tutoriales => millis()
El código tiene muchos delays() y ya te he dicho que eso detiene la ejecución de todo el código.
Ahora veamos el error puntual.
Bueno el código compila
AVR Memory Usage
Device: atmega2560
Program: 5506 bytes (2.1% Full)
(.text + .data + .bootloader)Data: 352 bytes (4.3% Full)
(.data + .bss + .noinit)[SUCCESS] Took 22.31 seconds
[SUMMARY]
Environment uno [SKIP]
Environment megaatmega2560 [SUCCESS]
[SUCCESS] Took 22.33 seconds
tal vez tu error fue no usar un MEGA 2560 y hayas usado un UNO.
// servo
#include <Servo.h>
#define Pecho 11
#define Ptrig 12
long duracion, distancia;
int ledrojo = 6;
int ledverde = 7;
Servo servoMotor;
//sensor de luz
int pinLed1 = 2; // Pines donde se conectan los leds
int pinLed2 = 8;
int pinLed3 = 9; // <== pin compartido por SERVO
int pinLDR = A0; // <== CORREGÏ esto a A0 y tu pusiste 0 solamente
int valorLDR = 0;
//sensor de llama
const int buzzer1 = 53;
const int sensor = 52;
//alarma PIR
const int buzzer2 = 13;
const int PIRPin = 3;
void setup(){
//servo
// Iniciamos el monitor serie para mostrar el resultado
Serial.begin(9600);
pinMode(ledrojo, OUTPUT);
pinMode(ledverde, OUTPUT);
// Iniciamos el servo para que empiece a trabajar con el pin 9
servoMotor.attach(9); // <== pin compartido por SERVO
servoMotor.write(0);
//ultrasonico
pinMode (Pecho, INPUT);
pinMode (Ptrig, OUTPUT);
//LEDS DE LDR
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
// sensor de llama
pinMode(buzzer1, OUTPUT);
pinMode(sensor,INPUT);
// sensor PIR
pinMode(buzzer2, OUTPUT);
pinMode(PIRPin, INPUT);
}
void loop () {
//servo
digitalWrite(Ptrig, LOW);
delayMicroseconds(2);
digitalWrite(Ptrig, HIGH);
delayMicroseconds(10);
digitalWrite(Ptrig, LOW);
duracion = pulseIn(Pecho, HIGH);
distancia = (duracion/2)/29;
Serial.print(distancia);
Serial.println("cm");
if ((distancia >5 ) or (distancia<0)) {
servoMotor.write(0);
digitalWrite(ledrojo, HIGH);
digitalWrite(ledverde, LOW);
// Esperamos 1 segundo
delay(1000);
}
else {
// Desplazamos a la posición 180º
servoMotor.write(90);
digitalWrite(ledverde, HIGH);
digitalWrite(ledrojo, LOW);
// Esperamos 1 segundo
delay(1000);
// luces LDR
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW);
valorLDR= analogRead(pinLDR);
Serial.println(valorLDR);
if (valorLDR < 10) { // Encender los leds apropiados de acuerdo al valor de ADC
digitalWrite(pinLed1, HIGH);
}
if (valorLDR < 10)
{
digitalWrite(pinLed2, HIGH);
}
if (valorLDR <10)
{
digitalWrite(pinLed3, HIGH);
}
delay(200); // Esperar unos milisegundos antes de actualizar
//sensor de llama
{if (digitalRead(sensor))
digitalWrite( buzzer1 , HIGH);
else
digitalWrite( buzzer1 , LOW);
}
//sensor PIR
int value= digitalRead(PIRPin);
if (value == HIGH)
{
digitalWrite(buzzer2, HIGH);
delay(12000);
digitalWrite(buzzer2, LOW);
delay(4000);
}
else {
digitalWrite(buzzer1, LOW);
}
}
}