Problema con cont- en codigo de Arduino (no diminuye la cuenta)

Hola, les comento el problema que se me presenta. Estoy realizando un contador que funcionaria atravez de un sensor infrarrojo, al pasar un objeto lo contabilizara. Hasta aqui todo bien, el problema es que al momento de querer instalar un boton ,el cual serviria para disminuir la cuenta, y agragar el codigo que respondera a la señal del boton no me disminuye la cuenta. He probado diferentes soluciones pero no he logrado solucionar.

#include <LiquidCrystal.h> 
LiquidCrystal lcd(12,11,10,9,8,7); // Pines del arduino al la LCD 
int sensor=13,estado=0,cont=0; // Sensor infrarrojo, su entrada y estado inicial
int boton=6,estado2=0; // Boton, con su entrada y estado inicial

void setup() {
   lcd.begin(16,2);            
   pinMode(sensor,INPUT); // Pin sensor indicado como entrada
   pinMode(boton,INPUT_PULLUP); // Pin boton indicado como entrada 
    lcd.setCursor(4,0); 
   lcd.print("ARMIX"); // Proyectar el nombre de la empresa
  delay(1400);   // Espera 1.4 segundo
  lcd.clear();  // Limpia la pantalla
  delay(300);
  lcd.setCursor(1,0);
   lcd.print("No. de piezas:");
 }

void loop() {                 
  
   estado = digitalRead(sensor);
   estado2 = digitalRead(boton);

// Este es el codigo para Pin sensor, este funciona correctamente y no da problemas
  
 if(estado == LOW){
     cont++;
     while(estado == LOW){                // Este codigo evita que al mantener un objeto sobre el sensor siga contando 
        estado = digitalRead(sensor);
     }
   }

//Este seria el codigo para Pin boton, este no me funcina y no arroja resultados

   if(estado2 == HIGH){
     cont--;
     while(estado2 == HIGH){                 
        estado2 = digitalRead(boton);
        }
     }

// Impresion en la LCD
   
   lcd.setCursor(7,1);         
   lcd.print(cont);
     }

NOTA: El motivo de intalar el boton es por si algun objeto pasa por el sensor de forma accidental de la posibilidad de disminuir la cuenta

cuando usa INPUT_PULLUP, el botón muestra LOW cuando se presiona

Por lo que deduzco del código tenés mal conectado el botón porque el pin queda siempre en HIGH.
Cuando lo pulsas le envias 5V y cuando lo liberas queda en HIGH por la resistencia pull-up.

Tenés 2 opciones, o conectas el botón al pin y a masa (GND) pero reaccionando a LOW o sino conectas una resistencia de 10K entre el pin y masa y defines la entrada como INPUT.

Saludos

1 Like

Gracias por la repuesta, y si, no sabia que mostraba LOW:)

Ya lo solucione, muchas gracias. Tenia dos errores:
1.- Era que tenia la conexion Pin - Boton - Power (+)
2.- En el codigo lo tenia como HIGH

Lo solucione cambiando la conexion a Pin - Boton - GND (-), ademas de cambiar a LOW.

Perfecto !