Apagar lcd backlight sin tocar y encender al tocar el arduino nano

Hola.
Pido al moderador que cambie el tema de sitio si ve que no es el correcto. Gracias

Explico lo que me está pasando:

Tengo el arduino nano con lcd I2C, el backlight se enciende correctamente, el problema es que le tengo puesta una sentencia al código para que se apague a un determinado tiempo si no se toca ningún boton ,esta parte esta funcionando, pero al pulsar cualquier botón deviera encender el lcd y esta parte es la que no logro

Aquí el código:

unsigned long currentMillis=millis();
unsigned long t_espera=500;
unsigned long t;    
       
    if (btn1 == LOW || OneButton == LOW)  {
        lcd.backlight();
            t=millis;
        } 
        
    if (millis()>t+t_espera) {
           lcd.noBacklight();
        t=0;
        }

Hay algo que estoy haciendo mal,pero no se cual,,,alguna sugerencia?.
Gracias de antemano

Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.

Te recomiendo que leas los siguientes tutoriales:

Tu código parece ser correcto, salvo que al no saber el resto del código no sabemos por donde puede fallar. A simple vista veo que el tiempo de espera es muy corto, de tan solo medio segundo, quizás un par de segundos sea más conveniente.

Por otro lado siempre estás comprobando el temporizador y quizás debieras tener en cuenta si se ha pulsado o no algún botón. Me explico: cuando detectas algún botón pulsado debes guardar el valor de millis y encender la luz, si no hay botón pulsado entonces compruebas que el tiempo ha transcurrido y apagas la luz.

if ( pulsado_algun_boton ) {
  t = millis();    // Guardamos el valor actual del reloj.
  lcd.backlight(); // Encendemos la luz.
}
else {
  // No hemos pulsado el botón, debemos comprobar si ha 
  // pasado el tiempo de espera.
  if ( millis()-t > t_espera ) {
     // Ha pasdo el tiempo de espera y debemos apagar la luz.
     lcd.noBacklight();
  }
}

Hola nuevamente.

Tu código va mejor que el mio tan solo con cambiar

if ( millis() - t > t_espera ) {

// yo lo tenía de esta forma

// if ( millis() > t + t_espera )  {

Funciona bien,pero sigo sin poder encender el LCD al apretar un botón

Tienes un error de sintaxis: t=millis , debería ser t=millis() ¿Tienes definido millis en alguna otra parte del código o es un error de copy paste?

El error ha sido al escribir el código aquí, esta bien en el mio,perdón

Cambia t=0 a T=0UL

Posiblemente el error pueda estar en la forma en la que lees los botones. Necesitamos ver el código en conjunto para analizar mejor el error.

Agrega también el UL al final del 500 en el tiempo de espera.