Pages: [1]   Go Down
Author Topic: automatización iluminación  (Read 1017 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

haciendo un proyecto de iluminación con 4 sensor pir  en diferentes areas sin embargo no es tan sensible por lo que es común q no detevte presencia a pesar de que haya, por lo que quiero darle un tiempo después de q no detecta, pero si le doy el tiempo delay para q quede prendido no sensan los demas mientras  está el delay. que puedo utilizar en ese caso?
saludos
Logged

Vilalba, Lugo, Spain
Offline Offline
Sr. Member
****
Karma: 23
Posts: 347
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset



                           
 
Quote
// Tiempo_de_Espera = milésimas que quieres retrasar
void   Encender()
{
  ...
  Tiempo_de_Esperado=0;
  ...
}

Void Apagar()
{
...
if ( Condicion_para_Apagar && Tiempo_de_Esperado==0)
{
      Tiempo_de_Esperado=Tiempo_de_Espera + millis();                             
 }
...
if ( Condicion_para_Apagar && Tiempo_de_Esperado>0 && millis()>Tiempo_de_Esperado)
{
      digitalwrite...
}
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias Marcial, estoy intentando adaptar tu código con un solo led y sensor. Sin embargo la espera solo la hace en los primeros segundos desde q lo conecto, si se apaga y mando señal para q prenda de nuevo al quitar la señal en seguida se apaga y ya no hace la espera. agrego código.

int A;
int E=11;
int S=2;
long Tiempoespera=5000;
void setup(){
   pinMode(E, INPUT);
   pinMode(S, OUTPUT);
}
void loop(){
   A=digitalRead(E);
   if(A==HIGH);
   {
      digitalWrite(S, HIGH);
   }
   else
   {
      if(A=LOW&&Tiempoespera==0)
      {
         Tiempoespera=Tiempoespera+millis();
      }
      if(A==LOW&&Tiempoespera>0&&millis()>Tiempoespera)
      {
         digitalWrite(S, LOW);
      }
   }
}

Tampoco ocupe el void inicio() porq me marca error.

Gracias y saludos
Logged

Vilalba, Lugo, Spain
Offline Offline
Sr. Member
****
Karma: 23
Posts: 347
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
int A;
int E=11;
int S=2;
long Tiempoespera=5000;
long Tiempoesperado=0;
void setup(){
   pinMode(E, INPUT);
   pinMode(S, OUTPUT);
}
void loop(){
   A=digitalRead(E);
   if(A==HIGH);
   {
      digitalWrite(S, HIGH);
      Tiempoesperado=0;
   }
   else
   {
      if(A=LOW&&Tiempoesperado==0)
      {
         Tiempoesperado=Tiempoespera+millis();
      }
      if(A==LOW&&Tiempoesperado>0&&millis()>Tiempoesperado)
      {
         digitalWrite(S, LOW);
      }
   }
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

pues sigue igual si le doy señal se queda encendido g aunque ya no detecte queda prendido =S
Logged

Vilalba, Lugo, Spain
Offline Offline
Sr. Member
****
Karma: 23
Posts: 347
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley-mr-green

Code:
bool A;
int E=11;
int S=2;
long Tiempoespera=5000;
long Tiempoesperado=0;
void setup(){
   pinMode(E, INPUT);
   pinMode(S, OUTPUT);
}
void loop(){
   A=digitalRead(E);
   if(A==HIGH)
   {
      digitalWrite(S, HIGH);
      Tiempoesperado=0;
   }
   else if(Tiempoesperado==0) {Tiempoesperado=Tiempoespera+millis();}
      else if(millis()>Tiempoesperado) {digitalWrite(S, LOW);}
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

y digo yo... que lo ideal en este caso es poner dos placas, si son de las más baratas no se encarecerá mucho el proyecto

la primera para los sensores y el stand-by de la segunda, que solo entra en funcionamiento para retardar las luces, además de que puede trabajar de manera que encienda por zonas dependiendo del sensor que esté actuando

lo poco que he aprendido de arduino en dos semanas, si puedes separar tareas, mejor
Logged

Palencia, Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 568
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola.
¿Lo has conseguido ya? Mira a ver si este código pudiera servirte.
Code:
bool A;
int E=11;
int S=2;
long Tiempopulsacion=0;
long Tiempoespera=5000;
long Tiempoesperado=5000;
void setup(){
   pinMode(E, INPUT);
   pinMode(S, OUTPUT);
}
void loop(){
   A=digitalRead(E);
   if(A==HIGH)
   {
      digitalWrite(S, HIGH);
      Tiempoesperado=0;
      Tiempopulsacion=millis();
   }
   if (Tiempoesperado<Tiempoespera){
      Tiempoesperado=millis()-Tiempopulsacion;
   } else {
      digitalWrite(S,LOW);
   }
}

Saludos.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

resjlta que son vacaciones y me dejé los arduinos y equipo en la oficina del trabajo. =+ regreso hasta el 7 de enero, regresando lo  lo pruebo gravias y felicez fiestas!!!!
Logged

Pages: [1]   Go Up
Jump to: