Go Down

Topic: Sensor pir añadir un nuevo pin con mas tiempo. (Read 233 times) previous topic - next topic

novelino



Un saludo y gracias por la ayuda que me podáis prestar.

Perdón por si la pregunta no esta en su lugar, aunque no sea excusa, es mi primera interacción en un foro.


Encender luces de la habitación, esto funciona como quiero.


Code: [Select]


#define PIR 2 //Establece el pin 2 para el sensor PIR
#define rele 3 //Establece el pin 3 para el relé
 
int tiempo = 15000; //Tiempo que suena la alarma
boolean sensor; //Variable que almacena el estado del sensor (activado/desactivado)
 
void setup()
{
  pinMode(PIR,INPUT); //Establece el pin del sensor como entrada
  pinMode(rele,OUTPUT); //Establece el pin del relé como salida
}
 
void loop()
{
  sensor=digitalRead(PIR); //Guarda el estado del sensor en la variable
  if(sensor==HIGH) //Si el sensor es activado entra en el bucle
  {
    digitalWrite(rele,HIGH); //Activa la alarma
    delay(tiempo); //Espera el tiempo definido en la variable "tiempo"
    digitalWrite(rele,LOW); //Desconecta la alarma
  }
}




Ahora quiero añadir un relé nuevo para que este mas tiempo, pero aunque al compilar no da error, una vez cargado no hace nada, ni tampoco ejecuta el que funciona.

Código que falla:

Code: [Select]


#define PIR 2 //Establece el pin 2 para el sensor PIR
#define rele1 3 //Establece el pin 3 para el relé1
#define rele2 4 //Establece el pin 4 para el relé2
 
int tiempo1 = 15000; //Tiempo que suena la alarma
int tiempo2 = 30000; //Tiempo que suena la alarma
boolean sensor; //Variable que almacena el estado del sensor (activado/desactivado)
 
void setup()
{
  pinMode(PIR,INPUT); //Establece el pin del sensor como entrada
  pinMode(rele1,OUTPUT); //Establece el pin del relé como salida
  pinMode(rele2,OUTPUT); //Establece el pin del relé como salida
}
 
void loop()
{
  sensor=digitalRead(PIR); //Guarda el estado del sensor en la variable
  if(sensor==HIGH) //Si el sensor es activado entra en el bucle
  {
    digitalWrite(rele1,HIGH); //Activa la alarma
    delay(tiempo1); //Espera el tiempo definido en la variable "tiempo"
    digitalWrite(rele1,LOW); //Desconecta la alarma
  }
  {
    digitalWrite(rele2,HIGH); //Activa la alarma
    delay(tiempo2); //Espera el tiempo definido en la variable "tiempo"
    digitalWrite(rele2,LOW); //Desconecta la alarma
  }
}



Gracias de nuevo.

surbyte

Hilo movido del foro en inglés donde solo se puede escribir en ese idioma al foro que corresponde.
Lee las Normas del foro.

novelino

Gracias por la respuesta.
 
Probare el código y seguiré investigando.

Para próximas consultas, que seguro las habrá, como posteo en el foro en español?

Gracias de nuevo.

novelino

Gracias por la info, administrador.

Supongo que como ya esta movido puedo seguir preguntando por aquí, si no es así me corregís.

ArduMyth, gracias por tu respuesta pero no hace nada, no se si tendré que modificar algún parámetro en tu esquetch, (seguro que por culpa mía) seguiré leyendo.

Mientras tanto he modificado el que tenia de antes que no funcionaba nada y he conseguido que se se encienda una' este 15 segundos y después se encienda la otra 30 segundos.

Code: [Select]


#define PIR 2 //Establece el pin 2 para el sensor PIR
#define rele1 3 //Establece el pin 3 para el relé1
#define rele2 4 //Establece el pin 4 para el relé2
 
int tiempo1 = 15000; //Tiempo que esta encendido el led
int tiempo2 = 30000; //Tiempo que esta encendido el led
boolean sensor; //Variable que almacena el estado del sensor (activado/desactivado)
 
void setup()
{
  pinMode(PIR,INPUT); //Establece el pin del sensor como entrada
  pinMode(rele1,OUTPUT); //Establece el pin del relé como salida
  pinMode(rele2,OUTPUT); //Establece el pin del relé como salida
}
 
void loop()
{
  sensor=digitalRead(PIR); //Guarda el estado del sensor en la variable
  if(sensor==HIGH) //Si el sensor es activado entra en el bucle
  {
    digitalWrite(rele1,HIGH); //Activa la alarma
    delay(tiempo1); //Espera el tiempo definido en la variable "tiempo"
    digitalWrite(rele1,LOW); //Desconecta la alarma
   
  if(sensor==HIGH) //Si el sensor es activado entra en el bucle
 
    digitalWrite(rele2,HIGH); //Activa la alarma
    delay(tiempo2); //Espera el tiempo definido en la variable "tiempo"
    digitalWrite(rele2,LOW); //Desconecta la alarma
  }
}



Como hago para que se enciendan a la vez?

Go Up