// Déclaration des variables
int button = 3;
int pinLED1 = 2;
int pinLED2 = 1;
int pinLED3 = 0;

int buttonState = 0;         // état du bouton est a 0
int lastButtonState = 0; // l'ancien état est a 0
int pause = 500;

// le setup
void setup() 
{
  // initialise les led en sortie
  pinMode(pinLED1, OUTPUT);
  pinMode(pinLED2, OUTPUT);
  pinMode(pinLED3, OUTPUT);
  // initialise le bouton en entrée
  pinMode(button, INPUT_PULLUP);

  
  // les 3 led éteintes 
  digitalWrite(pinLED1, LOW);
  digitalWrite(pinLED2, LOW);
  digitalWrite(pinLED3, LOW);

}

// fonction chenillard
void chen() 
{
  for (int i=0; i <= 5; i++) 
    { 
      digitalWrite(pinLED1, HIGH);
      digitalWrite(pinLED2, LOW);
      digitalWrite(pinLED3, LOW);
      delay(pause);
      digitalWrite(pinLED1, LOW);
      digitalWrite(pinLED2, HIGH);
      digitalWrite(pinLED3, LOW);
      delay(pause);
      digitalWrite(pinLED1, LOW);
      digitalWrite(pinLED2, LOW);
      digitalWrite(pinLED3, HIGH);
      delay(pause);    
    }   
}

// fonction clignotte
void clign() 
{
  for (int i=0; i <= 5; i++) 
    { 
      digitalWrite(pinLED1, HIGH);
      digitalWrite(pinLED2, HIGH);
      digitalWrite(pinLED3, HIGH);
      delay(pause);
      digitalWrite(pinLED1, LOW);
      digitalWrite(pinLED2, LOW);
      digitalWrite(pinLED3, LOW);
      delay(pause);
    }   
}

// la boucle
void loop()
{
    // lit l'état du bouton 
  buttonState = digitalRead(button);

  // compare avec l'état précédant
  if (buttonState != lastButtonState) {
    // si l'état du bouton est a 0 (bouton enclenché) 
    if (buttonState == LOW) {      
        chen();
        delay(1000);
        clign();
        delay(1000);       
    }
    // Delay pour la sensibilité du bouton 
    delay(50);
  }
  // sauve l'état du bouton pour la réinitialiser la boucle  
  lastButtonState = buttonState;
}