Problema con un RTC 1302 para controlar activacion de relevadores periodos

Que tal amigos estoy haciendo un proyecto para controlar con un rtc una placa de relevadores para activar unas lamaparas de led
El circuito de potencia es una placa para arduino de 8 relays ,interfaz visual es una lcd de 16x2 con protocolo de comunicacion I2R y una placa arduino uno.
El primr problema que me encontre es que no puedo activarlo con la concicion if por un prido de tiempo d 12 horas , por que solo se activa un minuto ejemplo:
Time t = rtc.time();
if(t.hr==19 && t.min==16)
{
digitalWrite(5,HIGH);
// delay(300);
digitalWrite(5,LOW);
//delay(500);
}
else if(t.hr==19 && t.min==18)
{
digitalWrite(5,LOW);
// delay(500);
}
Me di cuenta que los delay interferian con el fuincionmiento de la actualizacion de la pantalla, entonces use un void relay donce use la funcion milli()
void loop(){
printTime();
if(t.hr>=19 && t.min>=16)
{
relay();
}
if(t.hr>=22 && t.min>=00)
{
lcd.print("relay off");
}
}
void relay(){
unsigned long currentMillis = millis();
unsigned long currentMillis1 = millis();

if (currentMillis - previousMillis >= 300) {
previousMillis = currentMillis;
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
digitalWrite( 5, ledState);

}

if (currentMillis1 - previousMillis1 >=300 ) {
previousMillis1 = currentMillis1;
if (ledState1 == HIGH) {
ledState1 = LOW;
} else {
ledState1 = HIGH;
}
digitalWrite( 6, ledState1);
}

}
Observando me di cuenta que la funcion millis entra pero no toma encuenta y no osila en los milisegundos que necesito , solo osila con el segundero del RTC.
Despues lo intente sacando de del void relay y de todas maneras sigue el problema
no apaga cuando lo necesito y tampoco osila los 300 milli que necesito;
anexo el codigo que tengo espero me puedan ayudar
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <stdio.h>
#include <DS1302.h>

LiquidCrystal_I2C lcd(0x3F,16,2);
boolean ledState = LOW;
boolean ledState1 = HIGH;
unsigned long previousMillis = 0;
unsigned long previousMillis1 = 0;
namespace {

const int kCePin = 2; // Chip Enable
const int kIoPin = 3; // Input/Output
const int kSclkPin = 4; // Serial Clock

DS1302 rtc(kCePin, kIoPin, kSclkPin); // Create a DS1302 object.

String dayAsString(const Time::Day day) {
switch (day) {
case Time::kSunday: return "Dom";
case Time::kMonday: return "Lunes";
case Time::kTuesday: return "Martes";
case Time::kWednesday: return "Mier";
case Time::kThursday: return "Jueves";
case Time::kFriday: return "Vier";
case Time::kSaturday: return "Sabado";
}
return "(unknown day)";
}

void printTime() {

Time t = rtc.time();

const String day = dayAsString(t.day);

char buf[50];

Wire.begin();
lcd.begin(16, 2);

lcd.clear();

lcd.backlight();
lcd.setCursor(0, 0);
sprintf(buf, "%s",day.c_str());
lcd.print(buf);
lcd.backlight();
lcd.setCursor(6, 0);
sprintf(buf, "%02d/%02d/%04d",t.date, t.mon, t.yr);
lcd.print(buf);

lcd.setCursor(8, 1);
sprintf(buf,"%02d:%02d:%02d",t.hr, t.min, t.sec);
lcd.print(buf);
}

} // namespace
/*void relay(){

boolean ledState = LOW;
boolean ledState1 = HIGH;
unsigned long previousMillis = 0;
unsigned long previousMillis1 = 0;
unsigned long currentMillis = millis();
unsigned long currentMillis1 = millis();

if (currentMillis - previousMillis >= 300) {
previousMillis = currentMillis;
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
digitalWrite( 5, ledState);

}

if (currentMillis1 - previousMillis1 >=300 ) {
previousMillis1 = currentMillis1;
if (ledState1 == HIGH) {
ledState1 = LOW;
} else {
ledState1 = HIGH;
}
digitalWrite( 6, ledState1);
}

}*/

void setup() {
Serial.begin(115200);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);

rtc.writeProtect(false);
rtc.halt(false);

// Sunday, September 22, 2013 at 01:38:50.
//Time t(2017, 5, 16, 14, 14, 00, Time::kTuesday);

// Set the time and date on the chip.
// rtc.time(t);
}

// Loop and print the time every second.
void loop() {
printTime();

unsigned long currentMillis = millis();
unsigned long currentMillis1 = millis();

if (currentMillis - previousMillis >= 300) {
previousMillis = currentMillis;
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
digitalWrite( 5, ledState);

}

if (currentMillis1 - previousMillis1 >=300 ) {
previousMillis1 = currentMillis1;
if (ledState1 == HIGH) {
ledState1 = LOW;
} else {
ledState1 = HIGH;
}
digitalWrite( 6, ledState1);
}

//if(t.hr>=6 && t.min>=40);
// relay();

/* else(t.hr>=20 && t.min>=45);
{
lcd.setCursor(0, 1);
lcd.print("relay OFF");
}*/

}

Doble post.
Hilo cerrado y luego borrado