Ajuda em sketch com botão e tempo

Boa tarde sou novo no fórum, queria ajuda de vcs para um problema que estou tento.
meu projeto é conectar o Arduino Mega 2560 ao ScadaBr, até ai esta tudo certo consigo a comunicação normalmente, tudo funcionando.
O problema é que tenho que criar dois botões, estes dois botões irão acender o mesmo led, mas quando eu clico no botão 1 o led ficará acesso por 10 segundos e 10 segundos apagados, quando eu clico no botão 2, o mesmo led irá ficar aceso 30 segundos e apagado 10 segundos.
A configuração no ScadaBr esta normal, sei criar os botões as tags sem problema,
O código que estou usando vou passar para vcs darem uma olhada e se puderem me ajudar eu vou ficar muito grado.
O código que eu me baseei para fazer o meu é deste site: https://forum.arduino.cc/index.php?topic=288157.0
O autor do código original é o Sr LuisSilva.
No caso quando clico no botão que esta no ScadaBr, ele acende o led mas não respeita o tempo estipulado.

#include <SimpleModbusSlave.h>

const long INTERVAL_ON = 1000;
const long INTERVAL_OFF = 3000;
const int LED = 13;
int LEDSTATE;
long previousMillis;
long interval;

enum
{
ESTADO_LED,
HOLDING_REGS_SIZE
};

unsigned int holdingRegs[HOLDING_REGS_SIZE];

void setup()
{

modbus_configure(&Serial, 9600, SERIAL_8N1, 1, 2, HOLDING_REGS_SIZE, holdingRegs);

modbus_update_comms(9600, SERIAL_8N1, 1);

pinMode(LED, OUTPUT);

LEDSTATE = LOW;
previousMillis = 0;
interval = INTERVAL_OFF;

}

void loop()
{
unsigned long currentMillis = millis();

modbus_update();

if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;

if (digitalRead (holdingRegs[ESTADO_LED] == HIGH)) {
holdingRegs[ESTADO_LED] = HIGH;
interval = INTERVAL_ON;
}
else {
holdingRegs[ESTADO_LED] = LOW;
interval = INTERVAL_ON;
}
digitalWrite(LED,holdingRegs[ESTADO_LED]);
}
}

Dá uma olhada no meu código, nele tem vários temporizadores, de diversas maneiras, vai te ajudar.
https://youtu.be/j3wazWf68Ic