Galera me corrija por favor

estou testando um sensor pir, a forma mais simples nao funciona direito para minha aplicação, detecta qualquer variação minima no ambiente, preciso limitar um pouco. Entao estou lendo o pulso, pesquisei q no tempo minimo (girando a chavinha do proprio pir) o pico em sinal alto fica por +- 1 segundo e q o pulso é em milhão de micro segundos (posso estar errado). Bem meu codigo nao acontece nada, mesmo colocando pulso >1 pra ver se le alguma coisa, sempre 0. Copiei um código da net pra ver se o pir esta funcionando corretamente, funcionou como eu gostaria, mas entendi pouca coisa dele, entao nada melhor q corrigir meu próprio código para aprender.


#define led 8 //

#define pir 7 // 

void readSensor(); //função auxiliar para ler o sensor

//unsigned long sensorIn = 0; //armazena a duração do pulso
long unsigned int sensorIn=0;

void setup()
{

pinMode(led, OUTPUT);
pinMode(pir, INPUT);

Serial.begin(9600);
}

void loop()
{
readSensor(); //lê o sensor

//como pulseIn é em micro seg. para testar se o valor é maior q 
//1 segundo usei > 1 milhão (1milhao micro s. = 1 segundo)
if(sensorIn > 1E6 && sensorIn <3E6) //testa se a largura do sensor esta entre 1 e 3 segundos

{
digitalWrite(led, HIGH);

}

else
{
digitalWrite(led, LOW);

}

}

void readSensor(){
sensorIn = pulseIn(pir, HIGH, 3E6); //pulseIn= bliblioteca nativa mede largura do pulso em uma entrada digital
//pulseIn entrega o valor em micro segundos
Serial.println(sensorIn);
delay(1000);
}

Exibições: 53

As respostas para este tópico estão encerradas.

Respostas a este tópico

Olá.

O sensor PIR que conheço gera um sinal quando existe movimento. Não é uma saida largura de pulso e sim apenas um sinal digital (sim ou não).

Veja se o seu é o mesmo desse tutorial:

http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-sen...

Os trimpots devem resolver a sensibilidade. 

Eles são para uso interno em ambiente com pessoas. Máquinas (xerox, por ex), carros, animais, etc, podem atrapalhar.

então, o q estou usando é o HC-SR501, parece q um simples tempo de 30 segundos +- pra iniciar é fundamental para calibrar, dava muitos erros de leitura, acionava do nada, etc. Mas o que eu estava falando era +- isso: https://www.youtube.com/watch?v=knQOiF6YRLM

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2017   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço