Résultat étrange sur un compteur
Bonjour,
avec mon arduino Uno je cherche à allumer 3 LED avec ce programme.
J'utilise la librairie elapsedMillis pour mon code.
Code:
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;
}
} |
J'affiche également le contenu de mon compteur i. Le code tel que je l'ai posté fonctionne. Voici le contenu de la console :
Citation:
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
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 :
Citation:
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=2
Vous y comprenez quelque chose ? :koi: Où est le problème ? Pourquoi i prend ces valeurs ?