problema con temporizador para rele

hola buenas tardes, he estado intentando crear un temporizador que active un rele sin usar funcion delay hasta el momento considero no va muy bien por lo menos eso creo, asi que he decidido acudir al foro, tambien debido a que no se mucho de programacion y electronica alguien podria checar mi codigo y ayudarme por favor.

#include <LiquidCrystal.h>

LiquidCrystal  lcd(10, 9, 8, 7, 6, 5);

int horas = 0;
int minutos = 0;
int segundos = 0;
int tiempototal = 0;

int relay =13;

int boton =A0;
int boton1 =A1;
int boton2 = A2;
int arranque = A3;

int empieza = 1024;

int varboton = 0;
int varboton1 = 0;
int varboton2 = 0;

void setup ()
{
  lcd.begin(16, 2);
 
  pinMode(relay, OUTPUT);
  pinMode(boton, INPUT);
  pinMode(boton1, INPUT);
  pinMode(boton2, INPUT);
  pinMode(arranque, INPUT);
  
  empieza = 1024;

  varboton = 1;              
   varboton1 = 1;              
   varboton2 = 1;
  
 digitalWrite(relay, LOW);
}
void loop ()
{
  varboton = analogRead(boton);
  varboton1 = analogRead(boton1);
  varboton2 = analogRead(boton2);
  
  lcd.setCursor(0,0);
lcd.print("Temporizador"); 

if(varboton < 0)
{
  horas = horas +1;
  delay(200);
  }
  if (varboton1 < 0)
  {
    minutos = minutos + 1;
    delay(200);
  }
  if(varboton2 < 0);
  {
  segundos = segundos +1;
  delay(200);
  }
lcd.setCursor(0,1);
if(horas < 10)
lcd.print ("0");
lcd.print (horas);
lcd.print (":");

if(minutos < 10)
lcd.print ("0");
lcd.print (minutos);
lcd.print (":");

if(segundos < 10)
lcd.print ("0");
lcd.print (segundos);
lcd.print (":");

if (tiempototal == 0){
  tiempototal = segundos + (minutos * 60) + (horas * 60 * 60); 
}
if (tiempototal > 0){
    tiempototal--;    
  
        horas = ((tiempototal / 60)/ 60);   
        minutos = (tiempototal / 60) % 60;  
        segundos = tiempototal % 60; 
} 
 if(analogRead(arranque)== HIGH)
  {
  digitalWrite(relay, HIGH);
  delay(horas); 
  delay(minutos); 
  delay(segundos); 
  digitalWrite(relay, LOW);
  }
 else
 {
  digitalWrite(relay, LOW);
 }
 }