Bonjour,
avec mon arduino Uno je cherche à allumer 3 LED avec ce programme.
J'utilise la librairie elapsedMillis pour mon code.
J'affiche également le contenu de mon compteur i. Le code tel que je l'ai posté fonctionne. Voici le contenu de la console :
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 #include <elapsedMillis.h> const int LED_COUNT = 2; // Les LED sont sur les sorties paires (LED1 = pin 2; LED2 = pin4; LED3 = pin6; etc.) int CLOCK_INTERVAL = 1000; // période de clignotement int ledOutput[LED_COUNT]; boolean ledState[LED_COUNT]; elapsedMillis timeElapsed[LED_COUNT]; int i = 0; // the setup routine runs once when you press reset: void setup() { for (i=0; i<LED_COUNT; i++) { ledOutput[i] = (i + 1) * 2; ledState[i] = LOW; pinMode(ledOutput[i], OUTPUT); digitalWrite(ledOutput[i], ledState[i]); } Serial.begin(115200); i = 0; } // the loop routine runs over and over again forever: void loop() { if (timeElapsed[i] > CLOCK_INTERVAL && i < LED_COUNT) { ledState[i] = !ledState[i]; digitalWrite(ledOutput[i], ledState[i]); timeElapsed[i] = 0; } Serial.print("i="); Serial.print(i); Serial.print(" c="); Serial.println(LED_COUNT); i = i + 1; if (i > LED_COUNT) { i = 0; } }
Mais si je remplace la condition if (timeElapsed[i] > CLOCK_INTERVAL && i < LED_COUNT) par if (timeElapsed[i] > CLOCK_INTERVAL) voici le contenu de la console :i=0 c=2
i=1 c=2
i=2 c=2
i=0 c=2
i=1 c=2
i=2 c=2
i=0 c=2
i=1 c=2
Vous y comprenez quelque chose ?i=25288 c=2
i=0 c=2
i=1 c=2
i=25291 c=2
i=0 c=2
i=1 c=2
i=25294 c=2
i=0 c=2
i=1 c=2
i=25296 c=2Où est le problème ? Pourquoi i prend ces valeurs ?
Partager