Bouton poussoir activation de machine à fumée

Bonjour à tous,

je souhaiterai vous soumettre un problème qui semble simple à gérer mais pour lequel je bute.

Je vais faire un montage où une machine à fumée, branchée sur un arduino, se déclenche pendant 10 secondes en appuyant sur un bouton et ensuite s'éteint en attendant la prochaine pression sur le bouton.

La subtilité est que (je vous passe les détails du pourquoi) mais le bouton sera maintenu appuyé pendant plus de 10 secondes mais je souhaite que la machine s'arrête au bout de ces 10 secondes).

Afin de mieux visualiser sur l'arduino, j'ai fais un premier montage sur une breadboard avec un bouton poussoir et la LED sur la pin13 directement sur l'arduino.
Le bouton étant bien entendu le bouton et la LED symbolise la future machine à fumer.

On appuie sur le bouton est pendant 10 secondes la LED s'allume, mais elle reste allumée tant que le bouton n'est pas relâché.

Voici le code que j'ai utilisé :
const int buttonPin = 7; // the number of the pushbutton pin
const int pinFumee = 13; // the number of the LED pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {

// initialize the LED pin as an output:
pinMode(pinFumee, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT_PULLUP);

}

void loop() {
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(pinFumee, LOW);

} else {
// turn LED off:
digitalWrite(pinFumee, HIGH);
delay(10000);
}
}

J'ai lu plusieurs blog qui parle de la fonction while, ou ajouter un autre delay mais cela ne semble pas fonctionner.

Si quelqu'un aurait la gentillesse de m'aiguiller, cela serait très sympathique.

Je vous remercie.

Bonjour,

C'est simple, si tu représente les événements sous forme de chronogramme tu pourra plus facilement écrire ton code.