# Problemas com código

**URL:** <https://forum.fazedores.com/t/problemas-com-codigo/8619>\
**Category:** Embarcados\
**Created:** [Abril 7, 2022, 3:09am UTC](https://forum.fazedores.com/t/problemas-com-codigo/8619 "2022-04-07T03:09:40Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![FilipeMoraes31](https://avatars.discourse-cdn.com/v4/letter/f/dbc845/32.png) [@FilipeMoraes31](https://forum.fazedores.com/u/FilipeMoraes31)\
**Post date:** [Abril 7, 2022, 3:09am UTC](https://forum.fazedores.com/t/problemas-com-codigo/8619/1 "2022-04-07T03:09:40Z")

</div>

Olá  
Vamos ver se alguém consegue me ajudar, estou programando um contador de objetos, mas estou com problemas, pois minha programação esta “correta”, mas o arduino não esta fazendo a contagem. Segue programação

// Programa: Contador utilizando LCD 16x2 e botao reset e sensor TCRT 50000

#include\<Wire.h\>  
#include\<LiquidCrystal\_I2C.h\>

#define endereco 0x27  
#define colunas 16  
#define linhas 2

#define pinBuzzer 7

LiquidCrystal\_I2C lcd (endereco, colunas, linhas);

// Cria variaveis globais  
int contador = 0;

// Ligado ao pino “coletor” do sensor óptico - Porta A5 ao Arduino  
int pinosensor = 5;  
// Pino ligado ao botao de reset  
int pino\_botao\_reset = A0;  
// Armazena o valor lido pelo sensor optico  
int leitura;  
// Armazena o estado do botao reset  
int estadobotao = 0;

void setup()  
{  
lcd.init();  
lcd.backlight();  
lcd.clear();

// Define buzzer

pinMode(pinBuzzer, OUTPUT);

// Define o pino do sensor optico como entrada  
pinMode(pinosensor, INPUT);  
// Define o pino do botao reset como entrada  
pinMode(pino\_botao\_reset, INPUT);  
// Informacoes iniciais no LCD  
lcd.print(“Contador:0”);  
}

void loop()  
{  
// Verifica se o botao reset foi pressionado  
estadobotao = digitalRead(pino\_botao\_reset);  
if (estadobotao != 1)  
{  
// Zera o contador  
contador = 0;  
// Apaga o valor anterior  
lcd.setCursor(10,0);  
if(contador \< 10) lcd.print(" “);  
if(contador \< 100) lcd.print(” “);  
if(contador \< 1000) lcd.print(” “);  
if(contador \< 10000) lcd.print(” “);  
if(contador \< 100000) lcd.print(” “);  
if(contador \< 1000000) lcd.print(” “);  
lcd.print(”");  
// Mostra o valor zerado  
lcd.setCursor(10,0);  
if(contador \< 10) lcd.print(" “);  
if(contador \< 100) lcd.print(” “);  
if(contador \< 1000) lcd.print(” “);  
if(contador \< 10000) lcd.print(” “);  
if(contador \< 100000) lcd.print(” “);  
if(contador \< 1000000) lcd.print(” ");  
lcd.print(contador);  
}

// Le as informações do pino do sensor optico  
leitura = digitalRead(pinosensor);

// Verifica se o objeto foi detectado pelo sensor  
if (leitura != 1){  
digitalWrite(pinBuzzer, HIGH);  
}else{  
digitalWrite(pinBuzzer, LOW);  
}  
{  
// Incrementa o valor do contador  
contador = contador++;  
// Apaga o valor anterior  
lcd.setCursor(10,0);  
if(contador \< 10) lcd.print(" “);  
if(contador \< 100) lcd.print(” “);  
if(contador \< 1000) lcd.print(” “);  
if(contador \< 10000) lcd.print(” “);  
if(contador \< 100000) lcd.print(” “);  
if(contador \< 1000000) lcd.print(” “);  
lcd.print(”");  
// Mostra o valor do contador  
lcd.setCursor(10,0);  
if(contador \< 10) lcd.print(" “);  
if(contador \< 100) lcd.print(” “);  
if(contador \< 1000) lcd.print(” “);  
if(contador \< 10000) lcd.print(” “);  
if(contador \< 100000) lcd.print(” “);  
if(contador \< 1000000) lcd.print(” ");  
lcd.print(contador);

```
// Loop caso o objeto pare sobre o sensor 
while(digitalRead(pinosensor) != 1)  
{}  

```

}  
}

---

<div class="post-metadata">

**Author:** ![rogerbsp](https://avatars.discourse-cdn.com/v4/letter/r/b782af/32.png) [@rogerbsp](https://forum.fazedores.com/u/rogerbsp)\
**Post date:** [Abril 8, 2022, 3:25am UTC](https://forum.fazedores.com/t/problemas-com-codigo/8619/2 "2022-04-08T03:25:34Z")

</div>

vc tem um código enorme rodando no loop antes e depois do digitalRead, só o tempo de execução dessas instruções são suficientes para perder o momento de acionamento da sua entrada. Utilize interrupção externa que seu problema será resolvido, acrescente tb um debounce para checar se o evento de acionamento da entrada realmente ocorreu ou foi sinal espúrio.
