accensione e spegnimento con timer

salve a tutti ragazzi sono nuovo di programmazione arduino ho letto qualche guida ma sono sincero ho capito ben poco su come muovermi…
Sto costruendo una ciabatta pilotabile tramite bluetooth con modulo hc06 rct e 6 relè a 5v per pilotare 6 uscite indipendenti per una plafoniera da acquario…
Vi spiego il mio problema a livello software, ho trovato uno sketch online che ho opportunamente modificato in base alle mie esigenze ma così facendo i relè funzionano solamente da app facendo il classico acceso spento…
vorrei capire come posso fare ad inserire la timerizzazione per ogni singola uscita…
Vi spiego dovrei fare un accensione da 12 ore per ogni uscita dalle ore 13:00pm alle ore 01:00Am
ecco il codice che ho modificato ma non riesco a capire come e soprattutto dove inserire il timer

/*
Ciabatta Bluetooth ver.3
  
@Licence: CC Attribution Noncommercial Share Alike
@link:    https://creativecommons.org/licenses/by-nc-sa/3.0/it/
*/
 
#include <SoftwareSerial.h>
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
 
/*********************************************************************/
 
#define BT_TX_PIN  7
#define BT_RX_PIN  8
 
/*********************************************************************/
 
SoftwareSerial mySerial(BT_TX_PIN, BT_RX_PIN);
RTC_DS1307 RTC;
LiquidCrystal_I2C lcd(0x3F,16,2);
 
/*********************************************************************/
 
char lettera;    //inizializzo carattere
char buffer[16];
 
byte rele1=2;
byte rele2=3;
byte rele3=4;
byte rele4=5;
byte rele5=6;
byte rele6=7;
 
int previousSec = 0;
 
uint8_t SPENTO[8] = {0x0E, 0x11, 0x11, 0x11, 0x0A, 0x0E, 0x0E, 0x04,};
uint8_t ACCESO[8] = {0x0E, 0x1F, 0x1F, 0x1F, 0x0E, 0x0E, 0x0E, 0x04,};
 
/*********************************************************************/
 
void setup() {
  lcd.backlight();
    Serial.begin(9600);
    mySerial.begin(9600);
    Wire.begin();
    RTC.begin();
    lcd.init(); 
     
    pinMode(rele1, OUTPUT);
    pinMode(rele2, OUTPUT);
    pinMode(rele3, OUTPUT);
    pinMode(rele4, OUTPUT);
    pinMode(rele5, OUTPUT);
    pinMode(rele6, OUTPUT);
     
    digitalWrite(rele1, HIGH);
    digitalWrite(rele2, HIGH);
    digitalWrite(rele3, HIGH);
    digitalWrite(rele4, HIGH);
    digitalWrite(rele5, HIGH);
    digitalWrite(rele6, HIGH);
    
    if (! RTC.isrunning()) {
      Serial.println("RTC is NOT running!");
      RTC.adjust(DateTime(__DATE__, __TIME__));
    }
     
    lcd.createChar(0, SPENTO);
    lcd.createChar(1, ACCESO);
    lcd.setCursor (0, 0);
    lcd.print("Ciabatta BT v.3");
    delay(2000);
    lcd.clear();
    lcd.setCursor (12, 0);
    lcd.write(0);
    lcd.write(0);
    lcd.write(0);
    lcd.write(0);
    
}
 
/*********************************************************************/
  
void loop() {
  DateTime now = RTC.now();
     
  if(now.second() != previousSec) {
        lcd.setCursor( 0,0 );
        sprintf(buffer,  "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
        lcd.print( buffer );
        previousSec = now.second();
    }
     
    if(mySerial.available()) { // se il serial buffer contiene almeno un carattere
        lettera = mySerial.read(); // leggi il buffer
         
        switch (lettera) {
        case 'A':
            digitalWrite(rele1, LOW); // eccita il relay1
            Serial.println("relay 1 on");
            viewSocket( 1,true );
        break;
         
        case 'S':
            digitalWrite(rele1, HIGH); // diseccita il relay1
            Serial.println("relay 1 off");
            viewSocket( 1,false );
        break;
         
        case 'Q':
            digitalWrite(rele2, LOW); // eccita il relay2
            Serial.println("relay 2 on");
            viewSocket( 2,true );
        break;
         
        case 'W':
            digitalWrite(rele2, HIGH); // diseccita il relay2
            Serial.println("relay 2 off");
            viewSocket( 2,false );
        break;
         
        case 'E':
            digitalWrite(rele3, LOW); // eccita il relay3
            Serial.println("relay 3 on");
            viewSocket( 3,true );
        break;
         
        case 'R':
            digitalWrite(rele3, HIGH); // diseccita il relay3
            Serial.println("relay 3 off");
            viewSocket( 3,false );
        break;
         
        case 'T':
            digitalWrite(rele4, LOW); // eccita il relay4
            Serial.println("relay 4 on");
            viewSocket( 4,true );
        break;
         
        case 'Y':
            digitalWrite(rele4, HIGH); // diseccita il relay4
            Serial.println("relay 4 off");
            viewSocket( 4,false );
        break;

        case 'U':
            digitalWrite(rele5, LOW); // eccita il relay5
            Serial.println("relay 5 on");
            viewSocket( 5,true );
        break;
         
        case 'V':
            digitalWrite(rele5, HIGH); // diseccita il relay5
            Serial.println("relay 5 off");
            viewSocket( 5,false );
        break;
        
        case 'X':
            digitalWrite(rele6, LOW); // eccita il relay6
            Serial.println("relay 6 on");
            viewSocket( 6,true );
        break;
         
        case 'Z':
            digitalWrite(rele6, HIGH); // diseccita il relay6
            Serial.println("relay 6 off");
            viewSocket( 6,false );
        break;
        }
    }   
}
 
void viewSocket(byte num, boolean status) {
  lcd.setCursor( ( 11+num ),0 );
  if ( status ) { 
     lcd.write(1); 
     lcd.setCursor ( 0,1 );
     lcd.print("Acceso rele "); 
  } else { 
    lcd.write(0);
    lcd.setCursor ( 0,1 );
    lcd.print("Spento rele ");
  }
  lcd.setCursor ( 12,1 );
  lcd.print(num);
}

potreste aiutarmi?
Grazie

figaro:
... Sto costruendo una ciabatta pilotabile tramite bluetooth con modulo hc06 rct e 6 relè a 5v per pilotare 6 uscite indipendenti per una plafoniera da acquario ...

Mi spiace, ma in conformtità al REGOLAMENTO, punto 15 e suoi sottopunti (... regolamento che ti consiglio di rileggere con attenzione), NON sono ammessi thread che parlano di come pilotare oggetti che operano con tensioni superiori alla "bassissima tensione".

Abbiamo più volte consigliato, anche per ragioni legali, di evitare queste "modifiche" e di comprare ciabatte già fatte, pilotabili via RF a 433MHz o via WiFi (cose fattibili facilmente con Arduino senza incorrere in nessun rischio) ... tanto ormai hanno un costo ridicolo.

Purtroppo devo chiudere il tuo thread ... :confused:

Guglielmo