Sensor PIR y bluetooth

Estoy diseñando un sistema automático de iluminación que se active a través de bluetooth desde el teléfono celular, hasta esa parte no he tenido inconvenientes, el problema radica en que al añadir un sensor PIR para encender una luz no logro encontrar la manera de programarlo, no tengo el conocimiento, necesito orientación respecto a esto para incluir la activación dual de una luz mediante el mismo sensor y el PIR, de igual manera me gustaría que al accionarse el sensor se pudiera ver en el móvil

int pir=7;
int pirdato;
int foco13=13;
int foco12=12;
int foco11=11;
int foco10=10;
int estado=0;
void setup(){
Serial.begin(9600);
pinMode(pir,INPUT);
pinMode(foco13,OUTPUT);
pinMode(foco12,OUTPUT);
pinMode(foco11,OUTPUT);
pinMode(foco10,OUTPUT);

}
   void bluetooth(){
    if(Serial.available()>0){
    estado = Serial.read();
    }
     if (estado =='a'){
     digitalWrite(foco13,HIGH);
     }
     if(estado=='b'){
     digitalWrite(foco13,LOW);
     }
     if (estado =='c'){
     digitalWrite(foco12,HIGH);
     }
     if(estado=='d'){
     digitalWrite(foco12,LOW);
     }
if (estado =='e'){
digitalWrite(foco11,HIGH);
}
if(estado=='f'){
digitalWrite(foco11,LOW);
}
 }

 void sensorpir(){
   pirdato = digitalRead(pir);
    if (pirdato==HIGH){
     delay(1000);
     digitalWrite(foco10,HIGH);
     delay(20000);
     digitalWrite(foco10,LOW);
     delay(1000);
      }
    if(pirdato==LOW){
      digitalWrite(foco10,LOW);
       }
      }
 
 
    void loop(){
      bluetooth();
      sensorpir();
    }

Tu problema esta en el uso de delay()
Delay detiene la ejecución del código por el tiempo que le indiques.
Entonces veo cosas como 1 seg 20 seg 1 seg
Lo que debes hacer es ir a Documentación => Indice de temas tutoriales => millis() y maquina de estados.
Debes aprender a manejar ambas cosas para que el código funcione como si no hubiera demoras.
Lee lo que te he indicado y luego conversamos sobre cómo hacerlo.

1 Like

Muchas gracias