//  Clignotant commandé avec fréquence réglable (domaine public).

int PB_ON = 5;   // Bouton poussoir de mise en route (vert).
int PB_OFF = 2;  // Bouton poussoir d'arrêt (rouge).
int LED = 7;     // Sortie LED
int pot_value;
bool static volatile etatMontage = true;

void changeEtat() {
  // Routine d'interruption sur appui bouton poussoir rouge.
  etatMontage = false;
}

void setup() {
  // initialisations.
  pinMode(LED, OUTPUT);
  pinMode(PB_ON,INPUT_PULLUP);
  pinMode(PB_OFF,INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(PB_OFF), changeEtat, FALLING);
}

void loop() {
  while(digitalRead(PB_ON) == HIGH) {
    // Ne rien faire
  }
  etatMontage = true;  // Ici, poussoir vert appuyé
  while(etatMontage) {
  pot_value = analogRead(A0);
  digitalWrite(LED, HIGH);   // allume la LED
  delay(pot_value + 100);    // attente (100 ms mini, 1123 ms maxi)
  digitalWrite(LED, LOW);    // éreint la LED
  delay(pot_value + 100);    // attente (100 ms mini, 1123 ms maxi)
  }
  // Ici, poussoir rouge appuyé : etatMontage est 'false'
}