Boa noite galera!

Sou novo no fórum, estou cursando TI e estamos criando um projeto de contador de pessoas com módulo Arduino e sensor IR. A base principal nós já pegamos de outros projetos na internet e funcionou como o esperado, porém não como gostaríamos. O sensor IR tem um limite de distância de funcionamento muito curto e para o nosso projeto precisamos de sensores que façam a detecção a uma distância de pelo menos 80cm, além disso precisamos contabilizar entrada e saída pela mesma porta.

Pensamos em sensores laser para a contagem e alguma modificação no código para realizar a contagem de entrada/saída na mesma passagem.

Alguém tem alguma dica ou ideia do que pode ser feito?

O código utilizado é esse:

// Pino de ligacao do sensor IR de entrada
int pinoirent = 7;
// Pino de ligacao do sensor IR de saida
int pinoirsaida = 6;
// Variavel que registra o estado do sensor de entrada
int valorirent = 0;
// Variavel que registra o estado do sensor de saida
int valorirsai = 0;
// Variavel que registra a quantidade de visitantes que entraram
int content = 0;
// Variavel que registra a quantidade de visitantes que sairam
int contsai = 0;
// Variavel que registra a quantidade de pessoas na sala
int contsala = 0;
// Variavel que registra a quantidade anterior de pessoas na sala
int contanterior = 0;
// Pino de ligacao do led que representa a luz da sala
int pinoledsala = 10;


// Configuracao do display LCD
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
Serial.begin(9600);
// Seta o pino do sensor de entrada como ENTRADA
pinMode(pinoirent, INPUT);
// Seta o pino do sensor de saida como ENTRADA
pinMode(pinoirsaida, INPUT);
// Seta o pino do Led indicador de presenca como SAIDA
pinMode(pinoledsala, OUTPUT);
// Informacoes iniciais do display
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Sala:0 ");
lcd.setCursor(9,0);
lcd.print("Tot: 0");
lcd.setCursor(0,1);
lcd.print("Ent: 0");
lcd.setCursor(9,1);
lcd.print("Sai: 0");
}

void loop()
{
// Seta a variavel valorirent com o status do sensor de entrada
valorirent = digitalRead(pinoirent);
// Seta a variavel valorirsai com o status do sensor de saida
valorirsai = digitalRead(pinoirsaida);

// Mostra as informacoes dos sensores no serial monitor
Serial.print("entrada : ");
Serial.print(valorirent);
Serial.print(" saida : ");
Serial.println(valorirsai);

// Verifica se o estado do sensor de entrada foi alterado
if(valorirent!=1)
{
// Incrementa o valor do contador de entrada em 1 unidade
content=content+1;
// Verifica se a pessoa/objeto para em frente ao sensor
while(digitalRead(pinoirent)!=1)
{
delay(100);
Serial.println("Sensor de entrada parado !");
}
// Atualiza no LCD o valor do contador de entrada
lcd.setCursor(5,1);
lcd.print(content);
// Atualiza no LCD o valor total de visitantes
lcd.setCursor(14,0);
lcd.print(content);
}

// Verifica se o estado do sensor de saida foi alterado
if(valorirsai!=1)
{
// Incrementa o valor do contador de saida em 1 unidade
contsai=contsai+1;
// Verifica se a pessoa/objeto para em frente ao sensor
while(digitalRead(pinoirsaida)!=1)
{
delay(100);
Serial.println("Sensor de saida parado !");
}
// Atualiza no LCD o valor do contador de saida
lcd.setCursor(14,1);
lcd.print(contsai);
}

// Calcula o numero de visitantes na sala
contsala=content-contsai;
// Verifica se o numero atual de visitantes na sala foi alterado.
if (contsala != contanterior)
{
lcd.setCursor(5,0);
// Imprime 2 posicoes em branco, para limpar o cursor na
// coluna 5, linha 0
lcd.print(" ");
lcd.setCursor(5,0);
// Atualiza no LCD o numero de visitantes na sala
lcd.print(contsala);
// Apos atualizar no LCD, coloca na varivel CONTANTERIOR
// o valor atual de visitantes na sala (CONTASALA}
contanterior = contsala;

// Verifica se o valor do contador de pessoas na sala
// e maior do que 0
if (contsala > 0)
{
//Caso positivo, acende a luz/led
digitalWrite(pinoledsala,1);
}
else
{
//Caso negativo, apaga a luz/led
digitalWrite(pinoledsala,0);
}
}
}

Exibições: 1488

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

Respostas a este tópico

Bom dia VF,

Recomendações:
1. Remova seu sketch da área de texto do seu tópico;
2. Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
3. Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo" e anexe o arquivo
      com o seu sketch.

RV

RSS

© 2022   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço