arduino error con el tiempo

buenas compañeros...
poco a poco eh creado este ciodigo en arduino
no esta muy bien desarrollado pues soy nuevo en esto...
el error que tengo y quiero solucionar es en la parte de el tiempo de lectura de temperatura
mi programa en fisico funciona bien pero no eh dado con como
pones los botones subir y bajar en tiempo normal, es que tengo que dejarlos oprimido medio segundo
para que me los tome en cuenta el arduino... como podria corregir este error y poner muy aparte
el tiempo de lectura del sensor a el de los pulsadores? saludos

#include <LiquidCrystal.h>//libreria para el display lcd
float tempC=0;//datos de la temperatura
int tempPin=0;//sensor
int suma=7;//boton subir
int resta=8;//boton bajar
int contador=20;//ajuste de temperatur
int buttonPin = 9;
int ledPin =  10;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//salidas tx rx para el display lcd

void setup() 
{
  pinMode(ledPin, OUTPUT);      
  pinMode(buttonPin, INPUT);
  pinMode(resta,INPUT);//valor configurado como entrada
  pinMode(suma,INPUT);//valor configurado como entrada
  pinMode(13,OUTPUT);//pin 13 de arduino configurado como salida
  
  
  lcd.begin(16, 2);//ajuste del lcd a las columnas y sus filas de inicio
  lcd.setCursor(0, 0); 
  lcd.print("Set Point: ");
  lcd.print(contador);//mostrar en lcd "..."
}

void loop() 
{
  if (digitalRead(buttonPin) == HIGH) {        
    digitalWrite(ledPin, HIGH);  
  } 
  else {
    digitalWrite(ledPin, LOW); 
  }
  {

     if (digitalRead(suma)==HIGH)//comparativa de lecturas en el pin de entrada suma
  {
         while (digitalRead(suma)==HIGH )//mientras...
        { 
          delay(10); 
        }
             //Si lo soltó, Apagar Led y Contar 
            if (digitalRead(suma)==LOW)//comparativa de la lectura digital en el pin de entrada suma
          { contador++;
            lcd.setCursor(0,0); 
            lcd.clear();
            lcd.print("Set Point: ");
            lcd.print(contador);
          }
   }
     if (digitalRead(resta)==HIGH)//comparativa de lecturas en el pin de entrada resta
  {
         while (digitalRead(resta)==HIGH )//mientras...
        { 
          delay(10); 
        }
        
            if (digitalRead(resta)==LOW)//comparativa de lecturas en el pin de entrada resta
          { contador--;
            lcd.setCursor(0,0); 
            lcd.print("Set Point: ");
            lcd.print(contador);
          }
   }
}
    tempC=(5*analogRead(tempPin)*100.0)/1024.0;// calculo de lectura analogica en el pin de entrada 0A
  lcd.setCursor(0, 1); 
    lcd.print("Temp Act:  ");
    lcd.print(tempC);//mostrar en lcd "temperatura"
  delay(1000);//retraso antes de repetir el ciclo
  if(tempC < contador)//condicional si... diferencia para activar el relevador
  {
   digitalWrite(13, HIGH);
   }
  else//si no...
  {
  digitalWrite(13, LOW);//escritura digital de ajuste del pin de salida
   }
}

De leer sobre codigo se que arregla cambiando los delay() por interrupciones. Busca sobre ello.

tienes que deshacerte de los delays()

delay(1000);//retraso antes de repetir el ciclo

estos te bloquean el programa por eso no leen las pulsaciones.
puedes usar interrupciones pero si tu codigo es suficientemente rapido con quitar los delays sera suficiente.
mira el ejemplo que viene con arduino de blinkwithoutdelay

gracias copañero ya lo habia hecho solo por curiosidad para ver que pasaba y funciono,
claro no sabia que era la diferencia y tu la explicaste muy bien saludos y gracias