2 temporizadores

Hola, agradecería ayuda con este este proyecto, estoy haciendo 2 dimmer AC independientes cada vez que el usuario modifique el valor de un dimmer este debe de cumplir por ejemplo:
dimmer 1: 25 %
dimmer2: 54%
para esto necesito tener dos temporizadores independientes sin embargo no encuentro ningun ejemplo que me ayude a comprenderlo… se que necesito cambiar a la libreria timer3 en vez de la que tengo actualmente que es timer1

cualquier ayuda es agradecida

#include <TimerOne.h>   // inclui biblioteca Timer1
 
int PINS =2; // Define que o Dimmer será comandado pelo pino 4
int frequencia = 60;
int stateTriacA = 0;
int power = 0;  //inicializa variavel que controla potencia na lampada com 0 (lampada apagada)
int n =0;
int z=0;
int a=0;
int AC_pins[]={4,5};
volatile boolean zero_cross=0;
String readString;

void setup() {
  Serial.begin(9600);
  Serial.println("Hello bitches"); // so I can keep track of what is loaded
  
  for(int a=0; a < PINS; a++) {
pinMode(AC_pins[a], OUTPUT);
digitalWrite(AC_pins[a], LOW);
}
// Initialize the interruption time Timer1
Timer1.initialize(); // Initialize TimerOne library for the freq we need
// Attach the interrupt 0 to pin 2 for the detection of zero crossing (Zero Cross Detection)
attachInterrupt(0, zero_cross_detect, FALLING); // Attach an Interrupt to Pin 2 (Interrupt 0) for Zero Cross Detection
//attachInterrupt(0, zero_cross_detect2, FALLING);
}

void loop() {

  //expect single strings like 700a, or 1500c, or 2000d,
  //or like 30c, or 90a, or 180d,
  //or combined like 30c,180b,70a,120d,

  if (Serial.available())  {
    char c = Serial.read();  //gets one byte from serial buffer
    if (c == ',') {
      if (readString.length() >1) {
      //  Serial.println(readString); //prints string to serial port out

         n = readString.toInt();  //convert readString into a number

        // auto select appropriate value, copied from someone elses code.
        if(n >= 100 && n<=200)
        {
          Serial.print("Resistencia 2: ");
          z=n-100;
          Serial.println(z);
          zero_cross_detect();

        }
        if(n >= 0 && n<=100)
        {   
          Serial.print("Resistencia 1: ");
          Serial.println(n);
          zero_cross_detect();
          
        }
        if(n>=202){
          Serial.println("Invalido");
          for(int a=0; a < PINS; a++) {
digitalWrite(AC_pins[a], LOW);   // mantem gate do TRIAC desativado.
Timer1.stop();
}
        }
         readString=""; //clears variable for new input
      }
    }  
    else {     
      readString += c; //makes the string readString
    }
  }
}










void zero_cross_detect()
{
if(n > 0 && n<101){
long dimtime = int(map(n,0,100,8000,150));  // calcula o tempo de delay para o disparo do TRIAC 7950,100
Timer1.attachInterrupt(gateTRIAC, dimtime);  //associa a funcao gateTRIAC com Interrupcao do TIMER1
Timer1.start();  // inicia contagem TIMER1
}
else if(n > 100 && n<201){
long dimtime = int(map(z,0,100,8000,150));  // calcula o tempo de delay para o disparo do TRIAC 7950,100
Timer1.attachInterrupt(gateTRIAC, dimtime);  //associa a funcao gateTRIAC com Interrupcao do TIMER1
Timer1.start();  // inicia contagem TIMER1
}
else{
  for(int a=0; a < PINS; a++) {
digitalWrite(AC_pins[a], LOW);   // mantem gate do TRIAC desativado.
Timer1.stop();
}
}
}

void gateTRIAC ()
{  // trata interrupcao do TIMER1 gerando pulso no gate do TRIAC
if(n<100){
  a=0;
PINS=1; 
}
else{
  a=1;
PINS=2; 
}
for(a=a; a < PINS; a++) {
digitalWrite(AC_pins[a], HIGH);  // dispara o Triac
delayMicroseconds(5);  // aguarda 5 microsegundos para garantir disparo do TRIAC
digitalWrite(AC_pins[a], LOW);   // desabibilta gate do TRIAC
Timer1.stop();
}
}

Te escribi por privado. A ver si puedes y armas una simulación.