Ma première fonction

Bonjour,
j'ai ce petit bout de code qui créer un ON/OFF avec un poussoir.
si on appui la LED s'allume est reste allumé si on relâche le bouton.
Si on appui encore une fois la LED s'éteint.
ça fonctionne parfaitement

const int boutonPin = 2; //pin pour le bouton
const int ledPin = 13; //pin pour la lED

int interrupteur = LOW; //valeur de l'interrupeteur
int etatBouton = 0; //valeur pour changement d'état du bouton
int boutonState = 0; //etat fugitif du bouton

void setup() {
Serial.begin(9600);
// Initialisation de la LED en sortie
pinMode(ledPin, OUTPUT);
// Initialisation du bouton en entrée
pinMode(boutonPin, INPUT);
}

void loop(){
Serial.println(interrupteur);
// Lecture de l'état du bouton
boutonState = digitalRead(boutonPin);

//On regarde si le bouton est pressé
if (boutonState == HIGH) {
//on regarde si il y a un changement d'état
if (etatBouton == 1) {
// on change l'état du bouton
interrupteur=!interrupteur;
// on reinitialise le etatBouton
etatBouton=0;
// on affiche l'état de l'interupteur virtuel sur la led
digitalWrite(ledPin, interrupteur);
delay(50);
}
} else {
//le bouton n'est pas pressé, on active le etatBouton
etatBouton=1;
}
}

Maintenant je souhaite créer une fonction !
Les chose se complique pourquoi ma fonction renvoie "0" en permanence ?? :confused: l
j'ai besoin d'aide:

const int boutonPin = 2; //pin pour le bouton
const int ledPin = 13; //pin pour la lED

void setup() {
Serial.begin(9600);
// Initialisation de la LED en sortie
pinMode(ledPin, OUTPUT);
// Initialisation du bouton en entrée
pinMode(boutonPin, INPUT);
}

void loop(){
Serial.println(interrupteur());
}
bool interrupteur() {
bool interrupteur = LOW;//valeur de l'interrupeteur
int etatBouton = 0; //valeur pour changement d'état du bouton
int boutonState = 0;//Dernier etat du bouton
// Lecture de l'état du bouton
boutonState = digitalRead(boutonPin);
if (boutonState == HIGH) {
//si il y a un changement d'état
if (etatBouton == 1) {
// on change l'état du bouton
interrupteur=!interrupteur;
// on reinitialise le etatBouton
etatBouton=0;
}
}
else {
//le bouton n'est pas pressé, on active le etatBouton
etatBouton=1;
}
return (interrupteur);
}

Bonjour,

Mets ton code entre balises de code.

Ta variable etatBouton est toujours à 0, car elle est initialisée à 0 lors de la définition et n'est jamais modifiée avant le test.
Si tu veux garder la valeur de etatBouton entre chaque appel de fonction, il faut que tu le déclares static

    static int etatBouton = 0; //valeur pour changement d'état du bouton