Leds strip/Projet phares arrière. Problème code pour clignoteur

Les flèches correspondent aux états des boutons.

Flèche verte pour bouton gauche appuyé.
Flèche bleu pour bouton droit appuyé.
Flèche grise pour boutons relachés.

Les ronds correspondent a l'allumage ou a l'extinction des bandes leds.

Rond GRIS anneaux VERT(bas): Etat bouton GAUCHE sur LOW donc, bande leds GAUCHE éteinte.(BP relaché, flèche grise)

Rond GRIS anneaux BLEU(haut): Etat bouton DROITE sur LOW donc, bande leds DROITE éteinte.(BP relaché, flèche grise)

Rond VERT(gauche): Etat bouton GAUCHE sur HIGH donc, bande leds GAUCHE allumé.(BP appuyé, petite flèche verte )

Rond BLEU(droit): Etat bouton DROIT sur HIGH donc, bande leds DROITE allumé.(BP appuyé,petite flèche bleu)

Si j'appuie sur le bouton gauche(grande flèche bleu) alors que le bouton droit est appuyé, la bande leds de droite doit immédiatement s'éteindre et la bande leds de gauche doit immédiatement s'allumé.

inversément

Si j'appuie sur le bouton droit(grande flèche verte) alors que le bouton gauche est appuyé, la bande leds de gauche doit immédiatement s'éteindre et la bande leds de droite doit immédiatement s'allumé.

Ce que je n'arrive pas a faire, c'est de stopper la boucle for(int i=0; i<=4; i++) du dynamisme des leds.
Il faut a chaque fois attendre que la boucle du cligno droit se termine pour que la boucle du cligno gauche commence et inversément.

je vous remet une partie de mon code(que les 2 boutons cligno gauche et cligno droit) en sachant qu'il y a encore 4 autres boutons a imbriquer dans mon code.

#include <Adafruit_NeoPixel.h>
#define NUMPIXELS 5

Adafruit_NeoPixel clignoGauche = Adafruit_NeoPixel(NUMPIXELS, 5, NEO_RGBW + NEO_KHZ800);
Adafruit_NeoPixel clignoDroit = Adafruit_NeoPixel(NUMPIXELS, 6, NEO_RGBW + NEO_KHZ800);

boolean etat_ClignoGauche = 0;
boolean etat_ClignoDroit = 0;

int pin_ClignoGauche = 2;
int pin_ClignoDroit = 7;

long prevMillis = 0;
int tempo_AllumageClignoGaucheEtDroit = 30;
int tempo_ResteAllumeClignoGaucheEtDroit = 50;
int tempo_EteintClignoGaucheEtDroit = 30;
int tempo_ResteEteintClignoGaucheEtDroit = 50;

void setup()
{
  Serial.begin(9600);
  pinMode(pin_ClignoGauche, INPUT_PULLUP);
  pinMode(pin_ClignoDroit, INPUT_PULLUP);

  clignoGauche.begin();
  clignoDroit.begin();

  clignoGauche.show();
  clignoDroit.show();
}

void loop()
{
  etat_ClignoGauche = digitalRead(pin_ClignoGauche);
  etat_ClignoDroit = digitalRead(pin_ClignoDroit);

  if (etat_ClignoGauche == 0 && etat_ClignoDroit == 1)
  {
    codeClignoGauche();
  }

  if (etat_ClignoDroit == 0 && etat_ClignoGauche == 1)
  {
    codeClignoDroit();
  }
}

void codeClignoGauche()
{
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > tempo_AllumageClignoGaucheEtDroit)
    {
      prevMillis = millis();
      clignoGauche.setPixelColor (i, clignoGauche.Color(80, 255, 0));
      clignoGauche.show();
      i++;
    }
  }
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > tempo_ResteAllumeClignoGaucheEtDroit)
    {
      prevMillis = millis();
      clignoGauche.setPixelColor (i, clignoGauche.Color(80, 255, 0));
      clignoGauche.show();
      i++;
    }
  }
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > tempo_EteintClignoGaucheEtDroit)
    {
      prevMillis = millis();
      clignoGauche.setPixelColor(i, clignoGauche.Color(0, 0, 0));
      clignoGauche.show();
      i++;
    }
  }
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > tempo_ResteEteintClignoGaucheEtDroit)
    {
      prevMillis = millis();
      clignoGauche.setPixelColor (i, clignoGauche.Color(0, 0, 0));
      clignoGauche.show();
      i++;
    }
  }
}

void codeClignoDroit()
{

  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > tempo_AllumageClignoGaucheEtDroit)
    {
      prevMillis = millis();
      clignoDroit.setPixelColor (i, clignoDroit.Color(80, 255, 0));
      clignoDroit.show();
      i++;
    }
  }
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > tempo_ResteAllumeClignoGaucheEtDroit)
    {
      prevMillis = millis();
      clignoDroit.setPixelColor (i, clignoDroit.Color(80, 255, 0));
      clignoDroit.show();
      i++;
    }
  }
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > tempo_EteintClignoGaucheEtDroit)
    {
      prevMillis = millis();
      clignoDroit.setPixelColor(i, clignoDroit.Color(0, 0, 0));
      clignoDroit.show();
      i++;
    }
  }
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > tempo_ResteEteintClignoGaucheEtDroit)
    {
      prevMillis = millis();
      clignoDroit.setPixelColor (i, clignoDroit.Color(0, 0, 0));
      clignoDroit.show();
      i++;
    }
  }
}