Bonjour,
Je suis en train d'essayer de faire un programme qui me calcule la durée d'allumage d'une diode.
Concrètement, j'ai une photorésistante qui vérifie si la luminosité descend en dessous d'une certaine valeur. Si c'est île cas, une diode verte s'allume. Et là je voudrai vérifier/compter le temps d'allumage de cette diode.
Mon soucis est que dans mon moniteur série, les valeurs du temps compté sont "étranges".
15:27:27.835 -> #####################Début du programme#####################
15:27:32.816 -> Valeur minimale:581
15:27:32.851 -> Valeur maximale:727
15:27:32.885 -> Valeur de départ du chronomètre:0
15:27:32.919 -> 0'' 0
15:27:37.841 -> 0'' 0
15:27:42.858 -> Valeur seuil de 36 dépassée. Allumage de la LED verte pendant: 15'' 22
15:27:47.876 -> Valeur seuil de 41 dépassée. Allumage de la LED verte pendant: 20'' 31
15:27:52.878 -> Valeur seuil de 36 dépassée. Allumage de la LED verte pendant: 25'' 40
15:27:57.922 -> 25'' 40
15:28:02.928 -> 25'' 40
15:28:07.921 -> Valeur seuil de 50 dépassée. Allumage de la LED verte pendant: 40'' 51
15:28:12.927 -> 40'' 51
15:28:17.953 -> 40'' 51
Mon code est le suivant:
int sensorValue;
int sensorLow=1023;
int sensorHigh=0;
const int ledPin = 13;
unsigned long millisecondes;
unsigned long start;
void setup() {
Serial.begin(9600);
start=millis();
Serial.println("#####################Début du programme#####################");
pinMode(3,OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
// Calibration de la photorésistance
while (millis() < 5000){
digitalWrite(3,HIGH);
sensorValue=analogRead(A0);
if (sensorValue > sensorHigh){
sensorHigh = sensorValue;
}
if (sensorValue < sensorLow){
sensorLow = sensorValue;
}
}
Serial.print("Valeur minimale:");
Serial.println(sensorLow);
Serial.print("Valeur maximale:");
Serial.println(sensorHigh);
Serial.print("Valeur de départ du chronomètre:");
Serial.println(millisecondes);
digitalWrite(ledPin, LOW);
}
void loop() {
digitalWrite(3,LOW);
sensorValue = analogRead(A0);
if (sensorValue < sensorLow / 3){
// On commence à compter le temps d'allumage de la LED verte.
millisecondes = millis()-start;
Serial.print("Valeur seuil de ");
Serial.print(sensorValue);
Serial.print(" dépassée. Allumage de la LED verte pendant: ");
digitalWrite(3,HIGH);
}
Serial.print (( millisecondes / 1000) % 60); // Affichage des secondes.
Serial.print ("'' ");
Serial.println ( millisecondes % 1000); // Affichage des millièmes de secondes.
delay(5000);
}
Quelqu'un aurait une idée?
Petite précision: je débute en Arduino!
Merci!
Antoine