gestion de la tempo 2 led et 2 boutons

a marqué ce sujet comme résolu.

J'aimerais mettre 2 led contrôlées par 2 boutons différents tout en leur imposant une temporisation. Je parviens à les allumer indépendamment, mais lorsqu'elles s'éteignent, elle s'éteignent toujours au même moment, ce qui n'est pas voulu…

 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
const int bouton = 2;
const int bouton2 = 8;
const int led = 13;
const int led2 = 3;

//variable qui enregistre l'état du bouton
int etatBouton;
int etatBouton2;

#define SEUIL 15000

long montemps = 0;
long montemps2 = 0;

void setup()
{
    pinMode(led, OUTPUT); //la led est une sortie
    pinMode(bouton, INPUT); //le bouton est une entrée
    etatBouton = HIGH; //on initialise l'état du bouton comme "relaché"
     pinMode(led2, OUTPUT); //la led2 est une sortie
    pinMode(bouton2, INPUT); //le bouton2 est une entrée
    etatBouton2 = HIGH; //on initialise l'état du bouton2 comme "relaché"
}

void loop()
{
    etatBouton = digitalRead(bouton); //Rappel : bouton = 2
     etatBouton2 = digitalRead(bouton2); //Rappel : bouton =8

    if(etatBouton == HIGH) //test si le bouton a un niveau logique HAUT
    {
        digitalWrite(led,HIGH); //la LED reste éteinte
    }
    if(etatBouton ==LOW)  //test si le bouton a un niveau logique différent de HAUT (donc BAS)
    {
      if(millis()-montemps > SEUIL) {
        // ici 15 secondes se sont ecoulees depuis
        // le dernier passage au meme endroit
        montemps = millis();

      digitalWrite(led,LOW);} //le bouton est appuyé, la LED est allumée
    }
   if(etatBouton == HIGH) //test si le bouton a un niveau logique HAUT
    {
        digitalWrite(led,HIGH); //la LED reste éteinte
    }


    if(etatBouton2 == HIGH) //test si le bouton a un niveau logique HAUT
    {
        digitalWrite(led2,HIGH); //la LED reste éteinte
    }
    if(etatBouton2 ==LOW)  //test si le bouton a un niveau logique différent de HAUT (donc BAS)
    {
      if(millis()-montemps2 > SEUIL) {
        // ici 15 secondes se sont ecoulees depuis
        // le dernier passage au meme endroit
        montemps2 = millis();

      digitalWrite(led2,LOW);} //le bouton est appuyé, la LED est allumée
    } 

}
+0 -0

(si tu veux de la coloration pour ton code tu peux sélectionner le format c++)

  • Les lignes 30-33 et 43-46 sont les mêmes. Pourquoi ?
  • Tu ne peux éteindre ta LED que toutes les 15 secondes au minimum, on est d'accord ?

Sinon je ne vois pas l'impact entre la led1 et 2, elles semblent bien separee.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte