Projet Pupitre Control Neoxipel

Bon j'ai pu avancer un peu dans le projet, seulement je rencontre quelques soucis.
Je m’explique:

J'ai 3 boutons et un ring de 8 NeoPixels, actuellement j'utilise les 3 bouton pour différent mode,

bouton 1 mode 1: ont a un jeu de 8 couleurs différente qui défile, et ont reste allumé couleur Magenta.
bouton 2 mode 2: ont allume les NeoPixels en rouge.
bouton 3 mode 3: on eteint.

1er soucis que je rencontre, si j'appui sur le bouton 1 mes 8 couleurs défilent mais tant quelle ont pas toute défiler je peux pas passer au mode 2 ou même les éteindre, donc tant qu'on arrive pas à la fin c'est a dire qu'ont ces arrêter sur Magenta bin je peux rien faire,

Je sais pas si c'est très claire voici le code:

#include <Adafruit_NeoPixel.h>
#define PIN 6
#define nbLED 8
#ifdef __AVR__
#include<avr/power.h>
#endif

Adafruit_NeoPixel strip = Adafruit_NeoPixel(nbLED, PIN, NEO_GRB + NEO_KHZ800);

//Déclaration des Variables

int bouton1 = 2;
int bouton2 = 3; 
int bouton3 = 4;
const int APPUI=0;
const int PAS_APPUI = 1;


//Initialisation du port série et des entrées sorties
void setup()
{
  pinMode(bouton1, INPUT);
  digitalWrite(bouton1, HIGH);
  pinMode(bouton2, INPUT);
  digitalWrite(bouton2, HIGH);
  pinMode(bouton3, INPUT);
  digitalWrite(bouton3, HIGH);
  strip.setBrightness(100);
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  Serial.begin(9600);
}




//programme principal
void loop()
 {
    //lecture de l'état du bouton et stockage dans etatBouton
    boolean etatBouton1 = digitalRead(bouton1);
    boolean etatBouton2 = digitalRead(bouton2);
    boolean etatBouton3 = digitalRead(bouton3);



   //test des conditions
    if(etatBouton1==APPUI){
      colorWipe(strip.Color(250, 0, 0), 100); //rouge
      colorWipe(strip.Color(0, 250, 0), 100); //vert
      colorWipe(strip.Color(0, 0, 250), 100); //bleu
      colorWipe(strip.Color(0, 250, 250), 100); ///cyan
      colorWipe(strip.Color(250, 250, 0), 100); // jaune
      colorWipe(strip.Color(250, 0, 250), 100); //magenta
      strip.show();        
      delay(10);

    }
    
     
    if(etatBouton2==APPUI){
      colorWipe; 
      colorWipe(strip.Color(250, 0, 0), 100); //rouge

    }
   if(etatBouton3==APPUI){
      colorWipe(strip.Color(0, 0, 0), 0); //Eteint
      strip.show();
      delay(10);
    
    }

    etatBouton1 = PAS_APPUI;
    etatBouton2 = PAS_APPUI;
    return;
    
 }

 
//FONCTION BOUTON 1
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
    delay(wait);
  }
}