Bonjour,

J'ai 3 LED qui brillent en continu et un bouton poussoir.

Grâce au code ci-dessous, à chaque appui sur mon BP, je joue sur la variable "led" qui me permet d'éteindre ces dernières les unes après les autres. Le souci c'est que, pour se faire, je dois à chaque fois ré-appuyer sur le BP.

Je souhaiterai jouer sur cette même variable, non pas en ré-appyuant sur le BP, mais en le maintenant en continu pour qu'il y en ait une qui s'éteigne chaque seconde. Ce qui aurait le même effet, mais sans ré-appuyer dessus. Est-ce possible ?

Merci

P.S: Mon but étant pas de ne pas recréer cette séquence avec la fonction delay()

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
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
64
65
66
67
68
69
70
71
72
73
74
75
76
#define RED 12
#define GREEN 11
#define BLUE 10
#define BUTTON 7
int val = 0;
int old_val = 0;
int state = 0;
int led = 12;
int newled = 12;
 
 
void setup ()
{
  Serial.begin(9600); 
  pinMode (RED, OUTPUT);
  pinMode (GREEN, OUTPUT);
  pinMode (BLUE, OUTPUT);
  pinMode (BUTTON, INPUT);
 
}
 
 
void loop ()
{ 
  val = digitalRead (BUTTON);
   if((val == HIGH) && (old_val == LOW))
 
   {
    newled = led - 1; 
     if (newled == 8) { newled = 12; } 
    led = newled;
    delay(100);
   }
 
  old_val = val;
 
  if (led == 12)
  {
    digitalWrite(RED, HIGH);
    digitalWrite(GREEN, LOW);
    digitalWrite(BLUE, LOW);
    delay (100);
    digitalWrite(RED, LOW);
    delay (100);    
  }
 if (led == 11)
  {
    digitalWrite(RED, LOW);
    digitalWrite(GREEN, HIGH);
    digitalWrite(BLUE, LOW);
    delay (100);
    digitalWrite(GREEN, LOW);
    delay (100);    
  }
 if (led == 10)
  {
    digitalWrite(RED, LOW);
    digitalWrite(GREEN, LOW);
    digitalWrite(BLUE, HIGH);
    delay (100);
    digitalWrite(BLUE, LOW);
    delay (100);    
  } 
 if (led == 9)
  {
    digitalWrite(RED, LOW);
    digitalWrite(GREEN, LOW);
    digitalWrite(BLUE, LOW);
  } 
 
  Serial.print ("LED: ");
  if (led == 12) { Serial.println ("RED"); }
  if (led == 11) { Serial.println ("GREEN"); }
  if (led == 10) { Serial.println ("BLUE"); }
  if (led == 9) { Serial.println ("OFF"); }
}