Advertisement
RuiViana

Contagem_com_Pir

Jan 15th, 2017
400
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.29 KB | None | 0 0
  1. /*  http://labdegaragem.com/forum/topics/ajuda-com-contador-e-sensor-pir
  2. /*  // Leitura sensor presença PIR
  3.  
  4.   byte SensorP = A0;            // Pino ligado o led e o sensor PIR
  5.   // SensorP sempre será igual a 14
  6.  
  7.   int Leitura;                  // Faz a leitura se algo passo na frente no sensor
  8.   int Contador;                 // Conta quantas vezes o sensor for obstruido
  9.  
  10.   void setup()
  11.   {
  12.   Serial.begin (9600);
  13.   pinMode (SensorP, INPUT);     // Define o pino do sensor como entrada
  14.   }
  15.  
  16.   void loop()
  17.   {
  18.  
  19.   int Valorlido = analogRead (A0);
  20.   // valor lido varia de 0 até 1023
  21.   if (Valorlido > SensorP)     // Compara se valorlido  é maior que 14
  22.   {
  23.     Contador = Contador + 1;   // se for acrescenta 1  mas enquanto o sensor estiver
  24.                                // sentindo haverá incremento
  25.     Serial.println (Contador);
  26.   }
  27.   }
  28. */
  29. /*  Sugestões
  30.      Definir uma variavel com o valor para testat (com o sem a presença)
  31.      testar a condição e ligar um flag informando que já contou
  32.      desligar o flag ao ser liberado o sensor
  33.  
  34. */
  35.  
  36. #define SensorP  A0               // Pino ligado o led e o sensor PIR
  37. unsigned int limite = 400;        // Limite para sensor (Threshold)
  38. int Leitura;                      // Faz a leitura se algo passo na frente no sensor
  39. int Contador;                     // Conta quantas vezes o sensor for obstruido
  40. bool Flag = 0;                    // Flag para contagem feita
  41. int Valorlido;
  42. //---------------------------------
  43. void setup()
  44. {
  45.   Serial.begin (9600);            // Inicialisa serial
  46.   pinMode (SensorP, INPUT);       // Define o pino do sensor como entrada
  47. }
  48. //---------------------------------
  49. void loop()
  50. {
  51.   Valorlido = analogRead (A0);    // Le o sensor
  52.   delay(100);                     // Evitar contagem com spikes
  53.   if (Valorlido >= limite)        // Compara se valorlido é maior que o threshold
  54.   {
  55.     if (Flag == 0)                // Se ainda nao contou
  56.     {              
  57.       Contador = Contador + 1;    // Acrescenta 1  
  58.       Serial.println (Contador);  // Imprime
  59.       Flag = 1;                   // Informa que contou
  60.     }
  61.   }
  62.   if (Valorlido < limite)         // Compara se valorlido  é menor que o threshold
  63.   {
  64.     Flag = 0;                     // Informa que sensoir foi liberado
  65.   }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement