soy bastante malo para explicarme

te explico mejor creo .... estoy realizando un proyecto con comunicación de arduino y visual basic, en el cual en el entorno visual basic realice dos botones uno de apagar y otro de encender, arduino es la parte física en el cual una salida se activa o desactiva dependiendo el dato que le entregue visual basic, cuando se presione el botón de encendido se activa la salida de arduino en este caso un diodo led por un tiempo de 30 segundos, para lo cual he pensado en un delay o un retardo, he encontrado quizás dos posibles soluciones:
1) Se podría generar una interrupción al enviar un dato desde visual basic para poder apagar la salida en cualquier momento.
2) Sabiendo el tiempo que se demora cada instrucción se podría generar un bucle o lazo cerrado en donde cuente hasta llegar al tiempo pero no se como saber el tiempo exacto que se demora cada instrucción.
PD: espero que se me entienda, si no lo intentare explicar nuevamente y muchas gracias por responder.