Olá pessoal,
 
O projeto é um contador de pessoas através de dois sensores IR que foram incorporados em uma porta com uma leve distância entre o alinhamento entre ambos (um após o outro cerca de 8cm). Para facilitar, imagine um sensor de porta de elevador, só que no  projeto utilizamos dois sensores para detectar entrada e saída de pessoas. Identificamos o sentido, se entrando ou saindo, pela detecção do primeiro sensor acionado. 
 
O circuito está ok e a leitura dos receptores também, estamos lendo o sensor no arduino por meio de duas portas analógicas a A0 e a A1, os valores da leitura exbidos no monitor serial são:
 
Sem interceptação no IR: cerca de 20.
Com interceptação no IR: cerca de 200.
 
Até ai tudo ok, estamos agora com problema no código para contagem de passagem de pessoas. Pelos testes um dos vetores que armazenam o histórico dos tempos está zerando (a variável timeS2). Se puderem dar alguma idéia de lógica e fazer um code review... vlw galera.
 
Eis o código:
 
Tem uma imagem em anexo caso editor html do lab de garagem perca a indentação ou fica ruim de ver o código.
 

int sinal = 2;
int time = 0;
int padrao = 40;
//contador sensor1
int S1 = 0;
//contador sensor2
int S2 = 0;
//armazena o tempo das leituras do sensor1 atraves da funçao milis
int timeS1[100] = {0};
//armazena o tempo das leituras do sensor2 atraves da funçao milis
int timeS2[100] = {0};
//contador quantidade de pessoas dentro da sala
int dentro = 0;
int ledVerde = 8;
int ledVermelho = 12;

void setup() {

Serial.begin(9600);
    pinMode(sinal, OUTPUT);
    pinMode(ledVerde, OUTPUT);
    pinMode(ledVermelho, OUTPUT);

}

void loop() {

digitalWrite(sinal, HIGH);

int sensor1 = analogRead(A0);
    int sensor2 = analogRead(A1);

    //se o sensor1 detectar algo
    if(sensor1 >= padrao)
    {
        //contador do sensor1
        S1++;
        //momento em que houve a detecçao
        timeS1[S1] = millis();

        //se o sensor1 foi acionado primeiro
       if(timeS1[S1] < timeS2[S2])
       {
           digitalWrite(ledVermelho, HIGH);
           digitalWrite(ledVerde, LOW);

           //garante que no seja contado mais de uma pessoa por vez
           //o objeto pode parar a frente do IR sem problemas
           if(S1 != S2)
           {
               //add 1 pessoa dentro da sala
               dentro++;
           }
       }
    }

    if(sensor2 >= padrao)
    {
        S2++;
        timeS2[S2] = millis();

        if(timeS1[S1] > timeS2[S2])
       {
            digitalWrite(ledVerde, HIGH);
            digitalWrite(ledVermelho, LOW);

                if (S2 != S1)
                {
                    dentro--;
                }

        }
   }
}

 

 

 

Exibições: 7136

Anexos

Responder esta

Respostas a este tópico

achei muito legal. 

será que poderia ser usado para contar insetos? pergunto isso pois tenho um projeto de contar abelhas em uma colméia para estudos da faculdade.

Que sensor vc usou?

Vou olhar seu codigo para ver se ajudo.

Tái um desafio interessante,

As colméias que eu tive a oportunidade de obsersar tinham um tráfego intenso e intermitente de entrada e saída, com abelhas entrando e saindo ao mesmo tempo, e ainda por cima tem as "indecisas" que ficam entrando e saindo e as vezes ainda ficam paradas na entrada. Sem falar da rapidez e das dimensões das pequeninas.

Você conseguiria postar em detalhes a entrada da sua colméia? Assim podemos pensar em alguma solução.

Abraço.

 

 

bom dia sidney 

sou professor e estou desenvolvendo um contador de abelhas e minha dificuldade e por que a colmeia so tem uma entrada portanto voçe concluiu o que estava desenvolvendo?

obrigado roniedson

Olá.

 Será que não dá pra simplificar ???

 Por ex num encoder que precisa indicar pulsos de giro e direção: Existem 2 sensores.

 Um é o contador e o outro a  direção.

 Assim: no instante em que o sensor A é acionado vc ve se o sensor B está acionado. Se estiver é pq esta entrando, senão está saindo (ou vice versa).

Você sabe me responder uma dúvida?Se passar duas pessoas ao mesmo tempo ou mesmo abraçadas ele consegue detectar?

Iai lucas consegui o terminar o projeto?  

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço