Contador com sensor infravermelho e display LCD 16×2
Hoje vamos revisitar um post que fizemos lá em 2014, usando um Sensor de Proximidade Infravermelho, como esse da imagem abaixo. No post original usamos o sensor infravermelho e um buzzer pra indicar caso alguma pessoa passasse em frente ao sensor, e no post de hoje vamos acrescentar um display LCD 16×2 que vai mostrar as informações do contador.
Além disso, vamos usar um Arduino Nano para a montagem, já que o nosso contador será colocado dentro de uma caixa feita em impressora 3D. Este contador pode ser usado tanto para pessoas como para objetos.
O Sensor de Proximidade Infravermelho
O sensor infravermelho que vamos usar é um item simples de conectar, alimentado com tensão de 5V e possui um parafuso na parte traseira para ajuste da distância de detecção. Um pino único envia o sinal para o microcontrolador caso o sensor seja acionado.
Com alcance de até 80cm, muito maior do que os sensores infravermelhos tradicionais, ele pode ser usado para contagem de objetos e pessoas, como por exemplo em uma porta para contagem de visitantes em um determinado ambiente.
Circuito sensor infravermelho e display LCD 16×2
No nosso circuito do sensor infravermelho com display LCD 16×2, a conexão do sensor na placa Arduino Nano vai utilizar apenas o pino digital 4, como mostrado no esquema abaixo.
Como saída do contador vamos usar um display LCD 16×2 com módulo I2C integrado, o que vai simplificar bastante o processo de conexão.
O display será conectado nas portas A4 (SDA) e A5 (SCL) do Nano, que são as portas da interface I2C. A alimentação tanto do sensor infravermelho como do display serão feitas pelo pino 5V do Nano.
Programação do contador com sensor de proximidade
O nosso programa usa como biblioteca a LiquidCrystal_I2C, que você pode instalar a partir da IDE do Arduino em Sketch -> Incluir Biblioteca – Gerenciar Bibliotecas.
No Gerenciador de Bibliotecas, procure por LiquidCrystal_I2c conforme a imagem abaixo e em seguida selecione Instalar:
Para o sensor de proximidade não vamos usar nenhuma biblioteca específica, mas apenas a porta digital 4 do Nano.
Dúvidas na instalação da biblioteca? Confira o post Como instalar uma biblioteca na IDE Arduino.
Com a biblioteca instalada, carregue o programa abaixo na IDE do Arduino. Ele vai ler o estado da porta digital 4, onde está instalado o nosso sensor infravermelho.
Caso o sensor seja acionado, vai incrementar a variável contador (linha 39) e enviar o valor do contador tanto para o Serial Monitor como para o display 16×2 I2C.
//Programa: Contador com sensor de proximidade IR e display LCD 16x2 //Autor: Arduino e Cia #include <LiquidCrystal_I2C.h> int contador = 0; int pinosensor = 4; int leitura; //Armazena o valor lido pelo sensor //Define o display LCD como 16x2 e endereco 0x3B LiquidCrystal_I2C lcd(0x3B, 16, 2); void setup() { Serial.begin(9600); //Define o pino do sensor como entrada pinMode(pinosensor, INPUT); //Inicializa o display lcd.init(); lcd.backlight(); //Informacoes iniciais display lcd.setCursor(0, 0); lcd.print("Sensor Prox. IR"); lcd.setCursor(0, 1); lcd.print("Contador: 0"); } void loop() { //Le as informações do do sensor de proximidade IR leitura = digitalRead(pinosensor); if (leitura != 1) //Verifica se o objeto foi detectado { //Incrementa o valor do contador contador++; //Mostra o valor do contador no Serial Monitor Serial.print("Contador : "); Serial.println(contador); //Atualiza o valor do contador no display lcd.setCursor(10, 1); lcd.print(" "); lcd.setCursor(10, 1); lcd.print(contador); //Loop caso o objeto pare em frente ao sensor while (digitalRead(pinosensor) != 1) { delay(100); } } }
Se você quiser adicionar um botão de reset, pode instalar esse botão por exemplo na porta digital 6 do Arduino Nano e no programa incluir as informações abaixo dentro do setup():
pinMode(6, INPUT);
e dentro do loop, colocar a condição para checar se o botão foi pressionado:
int botao_reset = digitalRead(6); if (botao_reset == 1) { contador = 0; //Atualiza o valor do contador no display lcd.setCursor(10, 1); lcd.print(" "); lcd.setCursor(10, 1); lcd.print(contador); }
Vamos ver agora alguns detalhes sobre a montagem da caixa que construímos para colocar tudo isso dentro:
Montagem da caixa para o circuito
Para deixar o projeto mais “apresentável”, criamos uma caixa de 100 x 53 x 48 usando uma impressora 3D.
O filamento usado foi o PLA e o tempo de impressão foi de 1h30. Optamos por não usar suportes na hora da impressão, e por isso tivemos que ajustar um pouco a abertura do display, mas nada que pudesse comprometer o resultado final.
Com a caixa pronta, colocamos primeiro o sensor de proximidade IR, fixando o componente com as porcas fornecidas. Em seguida encaixamos o display LCD na abertura e logo abaixo do LCD colocamos a mini protoboard com o Arduino Nano, fixando a protoboard na caixa usando a sua fita dupla face.
Por fim, temos uma tampa que deixa exposto o conector micro USB do Nano, onde vamos colocar o cabo que vai energizar o circuito.
Se você quiser imprimir essa caixa e/ou alterar o projeto, os arquivos estão disponíveis para download aqui no site.
Gostou? Confira outros posts usando Arduino aqui mesmo no Arduino e Cia!
Olá, com essa mesma biblioteca posso usar um sensor de obstáculo infravermelho e digital? Grato!
Oi Valmir,
Pode sim, essa biblioteca não costuma apresentar problemas com outros componentes.
Abraço!
Adilson
Boa tarde.
Preciso controlar uma mesa com esquadro, para corte de papel.
Existe algum programa para contador de 5 dígitos com sistema de encorder , sendo a medição a frente soma é a ré subtrai.
Ou seja um contador com contagem de avanço é recuo.
Crescente e decrescente.