int rouge(10), jaune(9), vert(8), bouton(4);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(rouge, OUTPUT);
  pinMode(jaune, OUTPUT);
  pinMode(vert, OUTPUT);
  pinMode(bouton, INPUT_PULLUP);
}

String fonctionTexte(int texte) {

  switch (texte) {

    case 0:
      return "2148204 - Aucun";
      break;
    case 1:
      return "2148204 - Tous";
      break;
    case 2:
      return "2148204 - Rouge";
      break;
    case 3: 
      return "2148204 - Jaune";
      break;
    case 4:
      return "2148204 - Vert";
      break;
    default: 
      return "2148204 - Aucun";
      break;
  }

  return "Erreur";
}

void loop() {
  // put your main code here, to run repeatedly:
  int tempsCourant(millis()), compteur(0), tempsR(0), tempsJ(0), tempsV(0), texte(0);
  int luminosite(0), vitesse(2);
  String reponse;

  if ((tempsCourant - tempsR) >= 500 && (tempsCourant - tempsR) < 1000) {

    analogWrite(rouge, luminosite);
    luminosite += vitesse;


    if (tempsCourant >= 500) {

      tempsR = 2000;
    }
  }

  luminosite = 0;
  if ((tempsCourant - tempsJ) >= 1000 && (tempsCourant - tempsJ) < 1500) {
    

    digitalWrite(rouge, LOW);
    analogWrite(jaune, luminosite);
    luminosite += vitesse;


    if (tempsCourant >= 500) {

      tempsJ = 2000;
    }
  }

  luminosite = 0;
  if ((tempsCourant - tempsV) >= 1500) {

    digitalWrite(jaune, LOW);
    analogWrite(vert, luminosite);
    luminosite += vitesse;


    if (tempsCourant >= 500) {

      tempsV = 2000;
    }
  }


  while(tempsCourant >= 2000) {

    static int tempsCourant(0), tempsPrecedent(1);

    tempsCourant = digitalRead(bouton);

    if (tempsCourant != tempsPrecedent) {
       
      if (tempsCourant == 1) {
        compteur++;
        texte++;
        reponse = fonctionTexte(texte);
        Serial.println(reponse);
      }
      tempsPrecedent = tempsCourant;
    }
  
    if (compteur > 4) {

      compteur = 0;
      texte = 0;
    }

    switch (compteur) {

      case 0:
        digitalWrite(rouge, LOW);
        digitalWrite(jaune, LOW);
        digitalWrite(vert, LOW);
        break;
      case 1:
        digitalWrite(rouge, HIGH);
        digitalWrite(jaune, HIGH);
        digitalWrite(vert, HIGH);
        break;
      case 2:
        digitalWrite(rouge, HIGH);
        digitalWrite(jaune, LOW);
        digitalWrite(vert, LOW);
        break;
      case 3:
        digitalWrite(rouge, LOW);
        digitalWrite(jaune, HIGH);
        digitalWrite(vert, LOW);
        break;
      case 4:
        digitalWrite(rouge, LOW);
        digitalWrite(jaune, LOW);
        digitalWrite(vert, HIGH);
        break;
      default:
        digitalWrite(rouge, LOW);
        digitalWrite(jaune, LOW);
        digitalWrite(vert, LOW);
        break;
    }
  }
}
$abcdeabcde151015202530354045505560fghijfghij