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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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 compliquent. Pourquoi ma fonction renvoie "0" en permanence ?? :smiley-confuse: l
j'ai besoin d'aide:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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);
}