NO PUEDO FINALIZAR MI CICLO

Hola, Estoy realizando un codigo para un arrancador suave para un motor, sin embargo, no puedo finalizar el ciclo FOR, se me queda enganchado o no se como podria modificarlo para que este termine.
Lo estoy haciendo por control de triacs.
Cada vez que llego a 5, vuelve a iniciar la cuenta desde 128. Lo que realmente se desea es que termine en 5.

int AC_LOAD = 3; // Salida al pin Optoacplador
int atenuacion; // 128 on y 5 es off
void setup ()
{
  pinMode (AC_LOAD, OUTPUT); 
  attachInterrupt (0, zero_crosss_int, RISING); 
}


void zero_crosss_int ()
{
  

  int dimtime = (65 * atenuacion); // 128etapas/8.33ms = 65
  delayMicroseconds (dimtime);    
  digitalWrite (AC_LOAD, HIGH); // TRIGGER TRIAC
  delayMicroseconds (8.33); // tiempo empirico 
  digitalWrite (AC_LOAD, LOW);
  contador=contador+1;
  
}

void loop () 
{
  for (int i = 128; i >= 5; i --)
  {
    atenuacion = i;
    delay (8.33);
   }
}

Hola abedgarr,
Yo no soy el mayor entendido, también soy novato.

Lo que sucede es que el loop se repite infinitamente, no para.

Si quieres que el hecho sudeda solo una vez, prueba a escribir el código for en el void setup().

Cuándo abres un sckech te marca en gris dos frases, una en el setup y otra en el loop,

En la frase del setup, pone que introduzcas ahí lo que quieras que se ejecute una sola vez.

Después tendrás que tener esto en cuenta.

Saludos,