Aumento de brillo en leds multiplexados

a ya muchisimas gracias en serio, gracias a todos pos su ayuda lo implementare, solo una duda mas, para aclarar, dentro de mi progama estoy ocupando una interrupcion externa

attachInterrupt(digitalPinToInterrupt(18), sensor, FALLING);
void sensor(){
  contadorSensor0=1;
}

que es esta, entonces por lo que entiendo el timer lo tengo que configurar a 1kHz y este timer funciona de igual manera que mi inturrepcion, tengo que crear una funcion para el timer y dentro de ese timer tengo que programar el encendio y el apagado de los leds, dando un ejemplo muy burdo:

void encendido(){
digitalWrite(25,HIGH);
delayMicroseconds(100);
}
void apagado(){
digitalWrite(25,LOW);
delayMicroseconds(900);
}

obviamente es super basico porque el contador que es el delay se cambia por los valores del timer o esos delay los cambio por millis()?