como acrecentar um sensor PIR no projeto de IR. ( RESOLVIDO E FUNCIONANDO)

ola  eu gostaria e acrecentar um sensor de movimento PIR no meu projeto IR seno que já uso o projeto de IR para acender lâmpada porem eu gostaria e colocar o sensor PIR no corredor para acender a lâmpada do corredor a elétrica já esta feita só falta colocar o PIR no projeto de IR pra roar no arduino

#include <IRremote.h>  
int led = 8;
int RECV_PIN = 11;  
float armazenavalor;  
IRrecv irrecv(RECV_PIN);  
decode_results results;  
  
void setup()  
 pinMode(led, OUTPUT); 
  Serial.begin(9600);  
  irrecv.enableIRIn(); // Inicializa o receptor IR  
}  
   
void loop()  
{  
  if (irrecv.decode(&results))  
  {  
    
    Serial.println(results.value, HEX);  
    armazenavalor = (results.value);  
    if (armazenavalor == 0xFF30CF) //Verifica se a tecla 1 foi acionada  
    {  
     digitalWrite(led, HIGH); 
    }  
    if (armazenavalor == 0xFF18E7) //Verifica se a tecla 2 foi acionada  
    {  
     digitalWrite(led, LOW);
    }  
    
  irrecv.resume(); //Le o próximo valor  
  }  
}  
RESOLVIDO E FUNCIONANDO  segue abaixo code

#include <IRremote.h>
  #define pirPin 2                      // Pino para o PIR
  #define  lamp1Pin 3                   // Define o pino para a lampada 1
  #define  lamp2Pin 4                   // Define o pino para a lampada 2
  #define  lamp3Pin 5                   // Define o pino para a lampada 3
  #define  lamp4Pin 6                   // Define o pino para a lampada 4
  #define  lamp5Pin 7                   // Define o pino para a lampada 5
  #define  lamp6Pin 8                   // Define o pino para a lampada 6
    
  int RECV_PIN = 11;                    // Entrada do sensor de Infra Red Remote Control
  float armazenavalor;                  // Variavel para guardar valor lido do Remote Control
  IRrecv irrecv(RECV_PIN);              // Função para receber Remote Control
  decode_results results;               // Decodifica o resultado
  
  void setup()
  {
    pinMode(pirPin, INPUT);             // Define o Pino PIR com entrada       
    pinMode(lamp1Pin,OUTPUT);           // Define o pino lamp1Pin   como saida
    pinMode(lamp2Pin, OUTPUT);          // Define o pino lamp2Pin como saída 
    pinMode(lamp3Pin, OUTPUT);          // Define o pino lamp3Pin como saída 
    pinMode(lamp4Pin, OUTPUT);          // Define o pino lamp4Pin como saída 
    pinMode(lamp5Pin, OUTPUT);          // Define o pino lamp5Pin como saída 
    pinMode(lamp6Pin, OUTPUT);          // Define o pino lamp6Pin como saída 
    Serial.begin(9600);                 // Inicialisa o monitor serial
    irrecv.enableIRIn();                // Inicializa o receptor IR
  }
  // --------------------------------- loop ---------------------------- 
  void loop()
  {
    int pirVal = digitalRead(pirPin);                     // Variavel para "status"do PIR
    if (irrecv.decode(&results))                          // recebe códigos do RC               
    {
      Serial.println(results.value, HEX);                 // Imprime valor recebido na serial
      armazenavalor = (results.value);                    // Salva este valor em armazena valor
    
      // ----------------------------- lamp1--------------------------------
      if (armazenavalor == 0xFF6897)
                         // verifica se a tecla 12 foi acionada             
      {
         digitalWrite(lamp1Pin,HIGH);                      // Acende lampada 1
      }
      if (armazenavalor == 0xFF9867)
                       // verifica se a tecla 11 foi acionada 
      {
         digitalWrite(lamp1Pin, LOW);                       // Apaga lampada 1
      }
      
              // ----------------------------- lamp3 --------------------------------
      if (armazenavalor == 0xFFB04F)
                        // Verifica se a tecla 8 foi acionada             
      {
         digitalWrite(lamp3Pin, HIGH);                     // Acende lampada 3
      }
      if (armazenavalor == 0xFF30CF)
                        // Verifica se a tecla 7 foi acionada             
      {
         digitalWrite(lamp3Pin, LOW);                     // Apaga lampada 3
      }
              // ---------------------------- lamp4 --------------------------------
      if (armazenavalor == 0xFF18E7)

                       // Verifica se a tecla 5 foi acionada
      {
         digitalWrite(lamp4Pin, HIGH);                    // Acende lampada 4
      }
      if (armazenavalor == 0xFF7A85)

                       // Verifica se a tecla 6 foi acionada
      {
         digitalWrite(lamp4Pin, LOW);                     // Apaga lampada 4
      }
              // ----------------------------- lamp5 --------------------------------
      if (armazenavalor == 0xFF10EF)
                       // Verifica se a tecla 3 foi acionada
      {
         digitalWrite(lamp5Pin, HIGH);                    // Acende lampada 5
      }
      if (armazenavalor == 0xFF38C7)

                       // Verifica se a tecla 4 foi acionada
      {
         digitalWrite(lamp5Pin, LOW);                     // Apaga lampada 5
      }
              // ----------------------------- lamp6 --------------------------------
      if (armazenavalor == 0xFF5AA5)
                       // Verifica se a tecla 1 foi acionada
      {
         digitalWrite(lamp6Pin, HIGH);                    // Acende lampada 6
      }
      if (armazenavalor == 0xFF42BD)
                     // Verifica se a tecla 2 foi acionada
      {
         digitalWrite(lamp6Pin, LOW);                     // Apaga lampada 6
      }
              // -------------------------------------------------------------------------------- 
    irrecv.resume(); //Le o próximo valor                 // le proximo valor do RC
    }
    if(pirVal == 1)                                        // Se PIR detectou movimento
    {                                                      // Faça
       Serial.println("Motion Detected");                  // Msg no serial
       digitalWrite(lamp2Pin, HIGH);                       // Aqui acende a lampada                
    }
    else                                                   // Se PIR detectou movimento
      digitalWrite(lamp2Pin, LOW);                         // Aqui acende a lampada          
  }

QUERO AGRADECER AO MESTRE ( RUI VIANA ) PORQUE SEM ELE ESTE PROJETO NAO

SERIA VIAVEL , CHAMO ELE DE MESTRE PORQUE O CARA MANJA MUITO  , MUITO

OBRIGADO RUI VIANA QUE VC POSSA CONTINUAR AJUNDANDO MUITA GENTE ASSIM COMO

VC ME AJUDOU NESTE PROJETO E AJUDOU SEM PEDIR NADA EM TROCA, VALEU MESMO 

MESTRE

Exibições: 541

Responder esta

Respostas a este tópico

Oi MLS, boa noite,

veja se este code atende sua necessidade.

Como o seu code não estava comentado, eu supus que esta linha: digitalWrite(led, HIGH); 

é a que acende a luz.

Acostume a comentar seus códigos, isto facilita qdo precisa de ajuda e 

também o seu entendimento dele no futuro.

Comentei as linhas que adicionei.

code:

http://pastebin.com/N2FCDh2y

Rui

obrigado RV vou testar ok só me tira uma duvida o PIR aciona qual saída digital , já que ele vai acionar uma lâmpada que não funcionar com o IR só vai funcionar com o PIR desse já agradeço pela atenção

ok


 #include <IRremote.h> 


 #define pirPin 2                       // Pino para o PIR

 #define  lamp1Pin 3
 #define  lamp2Pin 4
 #define  lamp3Pin 5
 #define  lamp4Pin 6
 #define  lamp5Pin 7
 #define  lamp6Pin 8


 #define  RECV_PIN 11 


 float armazenavalor; 


 IRrecv irrecv(RECV_PIN); 


 decode_results results; 


// --------------------------------  setup  --------------------------- 


 void setup() 


 {


 pinMode(pirPin, INPUT);                 // Define o Pino PIR com entrada


 pinMode(lamp1, OUTPUT);
 pinMode(lamp2, OUTPUT);
 pinMode(lamp3, OUTPUT);
 pinMode(lamp4, OUTPUT);
 pinMode(lamp5, OUTPUT);
 pinMode(lamp6, OUTPUT);


 Serial.begin(9600); 


 irrecv.enableIRIn();       // Inicializa o receptor IR 


 } 


// --------------------------------  loop  ---------------------------     


 void loop() 



 int pirVal = digitalRead(pirPin);       // Variavel para "ststus"do PIR


 if (irrecv.decode(&results)) 

 { 


 Serial.println(results.value, HEX); 


 armazenavalor = (results.value); 


 if (armazenavalor == 0xFF30CF)       //Verifica se a tecla 1 foi acionada 



 if(pirVal == LOW)                            // Se PIR detectou movimento


 {                                           // Faça


 Serial.println("Motion Detected");        // Msg no LCD

  digitalWrite(led, HIGH);                  // Aqui acende a lampada? ????                  


  }


   } 


 if (armazenavalor == 0xFF18E7)       //Verifica se a tecla 2 foi acionada 
    { 

  digitalWrite(led, LOW);
  } 

  irrecv.resume();                     //Le o próximo valor 

   } 

  }

 obs     é 6 lâmpada uma delas sera acendida somente pelo sensor PIRas outras 5 serão acesas pelo IR

fiz essas  mudanças porem quando clico em verify aparece uma linha amarela em cima

 pinMode(lamp1pin, OUTPUT);                 // Define o pino lamp1 como saida
 pinMode(lamp2pin, OUTPUT);                 // Define o pino lamp2 como saida
 pinMode(lamp3pin, OUTPUT);                 // Define o pino lamp3 como saida
 pinMode(lamp4pin, OUTPUT);                 // Define o pino lamp4 como saida
 pinMode(lamp5pin, OUTPUT);                 // Define o pino lamp5 como saida
 pinMode(lamp6pin, OUTPUT);                 // Define o pino lamp6 como saida

na próxima resposta vou colocar o programa inteiro

#include <IRremote.h> 


 #define pirPin 2                       // Pino para o PIR

 #define  lamp1Pin 3
 #define  lamp2Pin 4
 #define  lamp3Pin 5
 #define  lamp4Pin 6
 #define  lamp5Pin 7
 #define  lamp6Pin 8


 #define  RECV_PIN 11 


 float armazenavalor; 


 IRrecv irrecv(RECV_PIN); 


 decode_results results; 

 void setup() 


 {


 pinMode(pirPin, INPUT);                 // Define o Pino PIR com entrada


 pinMode(lamp1pin, OUTPUT);                 // Define o pino lamp1 como saida
 pinMode(lamp2pin, OUTPUT);                 // Define o pino lamp2 como saida
 pinMode(lamp3pin, OUTPUT);                 // Define o pino lamp3 como saida
 pinMode(lamp4pin, OUTPUT);                 // Define o pino lamp4 como saida
 pinMode(lamp5pin, OUTPUT);                 // Define o pino lamp5 como saida
 pinMode(lamp6pin, OUTPUT);                 // Define o pino lamp6 como saida


 Serial.begin(9600); 


 irrecv.enableIRIn();       // Inicializa o receptor IR 


 }      

 void loop() 


 int pirVal = digitalRead(pirPin);       // Variavel para "ststus"do PIR


 if (irrecv.decode(&results)) 

 { 

 Serial.println(results.value, HEX); 


 armazenavalor = (results.value); 


 if (armazenavalor == 0xFF30CF)       //Verifica se a tecla 1 foi acionada 
 digitalWrite(lamp1, HIGH);                  // Aqui acende a lampada

  if (armazenavalor == 0xFF18E7) //Verifica se a tecla 2 foi acionada 

    { 

     digitalWrite(lamp1, LOW);

    } 

   

  irrecv.resume(); //Le o próximo valor 

  } 


 if(pirVal == LOW)                            // Se PIR detectou movimento

{                                           // Faça

 Serial.println("Motion Detected");        // Msg no LCD

  digitalWrite(lamp2, HIGH);                  // Aqui acende a lampada                 


     irrecv.resume();                     //Le o próximo valor 

   } 

  }

 Serial.println(results.value, HEX); 


 armazenavalor = (results.value); 


 if (armazenavalor == 0xFF18E7)       //Verifica se a tecla 2 foi acionada 
    { 

  digitalWrite(lamp3, HIGH);
  } 
  if (armazenavalor == 0xFF18E7) //Verifica se a tecla 2 foi acionada 

    { 

     digitalWrite(lamp3, LOW);

    } 

   

  irrecv.resume(); //Le o próximo valor 

  } 


  Serial.println(results.value, HEX); 


 armazenavalor = (results.value); 


 if (armazenavalor == 0xFF18E7)       //Verifica se a tecla 2 foi acionada 
    { 

  digitalWrite(lamp4, HIGH);         //Acende lampada
  } 
  if (armazenavalor == 0xFF18E7)   //Verifica se a tecla 2 foi acionada 

    { 

     digitalWrite(lamp4, LOW);    // Apaga lampada

    } 

   

  irrecv.resume(); //Le o próximo valor 

  } 


 Serial.println(results.value, HEX); 


 armazenavalor = (results.value); 


 if (armazenavalor == 0xFF18E7)       //Verifica se a tecla 2 foi acionada 
    { 

  digitalWrite(lamp5, HIGH);          //Acende lampada
  } 
  if (armazenavalor == 0xFF18E7)     //Verifica se a tecla 2 foi acionada 

    { 

     digitalWrite(lamp5, LOW);       // Apaga lampada

    } 

   

  irrecv.resume(); //Le o próximo valor 

  } 

}
 Serial.println(results.value, HEX); 


 armazenavalor = (results.value); 


 if (armazenavalor == 0xFF18E7)       //Verifica se a tecla 2 foi acionada 
    { 

  digitalWrite(lamp6, HIGH);          //Acende lampada
  } 
  if (armazenavalor == 0xFF18E7)      //Verifica se a tecla 2 foi acionada 

    { 

     digitalWrite(lamp6, LOW);       // Apaga lampada

    } 

   

  irrecv.resume(); //Le o próximo valor 

  } 

depois a faixa amarela que disse aparecer , aparece essa fraze em baixo

was not declared in this scope

Oi MLS

você definiu os pinos com P maiúsculos e definiu o pinMode com p minusculo.

Rui

poxa a difícil nossa

Oi MLS,

não entendi seu ultimo comentário?

Rui

disse que esta difícil  , porque não estou conseguindo

MLS, primeira conselho.

Se conselho fosse bom , não se dava, vendia-se.

Mas desta vez não vou vender.

Comente seu código e "identi" ele.

fica mais fácil encontrar problemas.

Agora estou organizando ele, e vi que tem vários "}"fora do lugar.

Rui

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço