Cambiar delay por micros()

OK. Tiene muy buena pinta.
A ver, es relativamente sencillo: tienes que crear tres variables, por ejemplo:
pasoPorCero
tiempoTriac1
tiempoTriac2

cuando pasas por cero, en la rutina de la interrupción, cargas millis() en pasoPorCero.

Y después, en el loop, comparas con millis() los tiempoTriac y, si ha pasado el tiempo, le mandas el pulso al triac y listo. (Si el pulso tiene que tener una cierta duración mayor que la que el propio microcontrolador deje entre las instrucciones digitalWrite .... HIGH y digitalWrite .... LOW, tendrías que usar otra variable para la duración del pulso "deltaPulso")

Saludos

(No me detengo en la sintaxsis porque tengo una memoria pésima y metería la pata seguro ...)