RuiViana

Fluxo_Pessoas

Oct 15th, 2016
140
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <LiquidCrystal.h>
  2. #define ENTRADA     A0
  3. #define SAIDA       A1
  4. #define LUZVERDE    12
  5. #define LUZVERMELHA 9
  6. int ldrEntrada, ldrSaida;
  7. boolean passouPelaEntrada, passouPelaSaida;
  8. LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
  9. int contador = 0;
  10. //------------------------------------------
  11. void setup()
  12. {
  13.   Serial.begin(9600);
  14.   pinMode(LUZVERDE, 1);
  15.   pinMode(LUZVERMELHA, 1);
  16.   lcd.begin(16, 2);
  17.   lcd.setCursor(0, 1);
  18.   abrirSinal();
  19. }
  20. //-------------------------------------------
  21. void loop()
  22. {
  23.   ldrEntrada = analogRead(ENTRADA);                         // Le sensor entrada
  24.   ldrSaida   = analogRead(SAIDA);                           // Le sensor saida
  25.   //--------------------------------- Controle entrada
  26.   while (ldrEntrada > 200)                                  // Se passou pela entrada
  27.   {
  28.     passouPelaEntrada = true;                               // Informe entrou corredor
  29.     fecharSinal();                                          // Fechar sinal
  30.         Serial.println("passouPelaEntrada1");
  31.     delay(500);
  32.     ldrEntrada = analogRead(ENTRADA);                       // Verifica se sensor está livre
  33.   }
  34.   while (passouPelaEntrada == 1)                            // Enquanto estiver no corredor
  35.   {
  36.     ldrSaida   = analogRead(SAIDA);                         // Le sensor saida para saber se entrou no recinto
  37.     ldrEntrada = analogRead(ENTRADA);                       // Le sensor entrada para saber desistiu
  38.     while (ldrSaida > 200)                                  // Se entrou no recinto
  39.     {
  40.            Serial.println("passouPelaSaida1");
  41.       contador++;                                           // Incrementa contagem
  42.       abrirSinal();                                         // Abrir sinal
  43.       passouPelaEntrada = false;                            // Informe saiu corredor
  44.       ldrSaida   = analogRead(SAIDA);                       // Verifica se sensor está livre
  45.       Serial.println(contador);
  46.     }
  47.     while (ldrEntrada > 200)                                // Se retornou para fora
  48.     {
  49.       passouPelaEntrada = false;                            // Informe saiu corredor
  50.       abrirSinal();                                         // Abrir sinal
  51.             Serial.println("Saiu sem contar");
  52.       ldrEntrada = analogRead(ENTRADA);                     // Verifica se sensor está livre
  53.     }
  54.   }
  55.   //---------------------------------------- Controle saida
  56.   while (ldrSaida > 200)                                    // Se passou pela saida
  57.   {
  58.     passouPelaSaida = true;                                 // Informe entrou corredor
  59.     fecharSinal();                                          // Fechar sinal
  60.         Serial.println("passouPelaSaida2");
  61.     delay(500);
  62.     ldrSaida   = analogRead(SAIDA);                         // Verifica se sensor está livre
  63.   }
  64.   while (passouPelaSaida == 1)                              // Enquanto estiver no corredor
  65.   {
  66.     ldrSaida   = analogRead(SAIDA);                         // Le sensor saida para saber se retornou no recinto
  67.     ldrEntrada = analogRead(ENTRADA);                       // Le sensor entrada para saber saiu
  68.     while (ldrEntrada > 200)                                // Se saiu
  69.     {
  70.             Serial.println("passouPelaEntrada2");
  71.       abrirSinal();                                         // Abrir sinal
  72.       passouPelaSaida = false;                              // Informe saiu corredor
  73.       ldrEntrada = analogRead(ENTRADA);                     // Verifica se sensor está livre
  74.             Serial.println(contador);
  75.     }
  76.     while (ldrSaida > 200)                                  // Se retornou para o recinto
  77.     {
  78.       passouPelaSaida = false;                              // Informe saiu corredor
  79.       abrirSinal();                                         // Abrir sinal
  80.             Serial.println("Entrou Novamente");
  81.       ldrSaida   = analogRead(SAIDA);                       // Verifica se sensor está livre
  82.     }
  83.   }
  84. }
  85. //-----------------------------------
  86. void abrirSinal()
  87. {
  88.       Serial.println("Abriu");
  89.   delay(500);                                        // pra dar tempo da pessoa sair de vez do corredor
  90.   digitalWrite(LUZVERDE, 1);
  91.   digitalWrite(LUZVERMELHA, 0);
  92. }
  93. //-----------------------------------
  94. void fecharSinal()
  95. {
  96.       Serial.println("Fechou");
  97.   digitalWrite(LUZVERDE, 0);
  98.   digitalWrite(LUZVERMELHA, 1);
  99. }
RAW Paste Data