Salut!
je suis à mes balbutiements de programmation en C, et je suis face à une énigme!
Mon code est le suivant:
int sCount=2; //pin Compteur d'impulsion cadran
int sRead=3; //pin d'interruption front descendant, "readWriteInterrupt"
int lcdLed=9;
int ywLed=12;
int rdLed=13;
int volatile nCount=0;
int volatile nEssai=0;
int volatile dialArray[10]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
void setup() {
Serial.begin(9600);
pinMode(sCount, INPUT_PULLUP);
pinMode(sRead, INPUT_PULLUP);
pinMode(lcdLed, OUTPUT);
pinMode(ywLed, OUTPUT);
pinMode(rdLed, OUTPUT);
attachInterrupt(1, readWriteInterrupt, RISING);
}
void loop() {
interrupts();
while(digitalRead(sRead)==LOW){
if(digitalRead(sCount)==0){
digitalWrite(ywLed, HIGH);
nCount++;
delay(50);
}
digitalWrite(ywLed, LOW);
}
if(nEssai==10){
noInterrupts();
Serial.println("Hello World");
nEssai=0;
digitalWrite(rdLed, HIGH);
delay(300000);
digitalWrite(rdLed, LOW);
}
interrupts();
}
void readWriteInterrupt(){
if(nCount==10){
nCount=0;
}
dialArray[nEssai]=nCount;
Serial.print(dialArray[nEssai]);
nEssai++;
nCount=0;
}
Vous remarquerez qu'à la ligne 35 un delay de 300000, milliseconde selon https://www.arduino.cc/en/Reference/Delay donc, la "rdLed" devrait être "HIGH" 300s non?
Seulement la led s'allume 5 secondes. chronomètre à la main!
Je comprends pas...
Merci pour vos lumières!