Page 1 sur 1

mesure vitesse

Message non luPosté: Lun 10 Sep 2012 06:49
de fabrice54
bonjour;
j'ai écris un petit programme qui devrais normalement compter du temps entre deux entre deux changement d’état d'un contact;
mais je m'aperçois que le temps de départ est égal au temps d’arrivée et je ne comprend pas pourquoi ,car j'ai écris le même en simulent le contact par du logiciel et cela fonctionne.
Si quelqu’un peur m'aider merci beaucoup.
cordialement
F.Thomas.
Code: Tout sélectionner
unsigned long  tempsArrive = 0;
unsigned long tempsDepart = 0;
float duree=0.0;
float vitesse=0.0;
int val_broche1=0;
int broche1=2;
void setup(){
 Serial.begin(9600);
 pinMode(broche1,INPUT);
}
void loop(){
val_broche1=digitalRead(broche1);
while(val_broche1==HIGH)
{
val_broche1=digitalRead(broche1);
}
tempsDepart = millis();
 Serial.print("tempsDepart=" );
 Serial.println(tempsDepart/1000 );
val_broche1=digitalRead(broche1);
if(val_broche1==LOW)
{

tempsArrive=millis();
 Serial.print("tempsArrive=" );
 Serial.println(tempsArrive/1000 );
 duree =tempsArrive-tempsDepart;
 Serial.print("duree=");
  Serial.println(duree);
 vitesse=(1/duree)*2.13*1000*3.6;
Serial.print("vitesse=");
Serial.println(vitesse);
}
delay(100);
}


Re: mesure vitesse

Message non luPosté: Lun 10 Sep 2012 08:54
de Stéphane
Bonjour,

Dans votre programme, vous sortez de la boucle while et commencez à compter si broche1 est à l'état bas.
Juste apres, vous rentrez dans votre if si broche1 est à l'état bas. Donc c'est normal que votre temps d'arrivée soit égal à votre temps de départ. Mettez avant votre if une condition while(broche1==bas), et remplacez votre condition if par juste les instruction à faire quand le comptage est terminé.

Bonne journée

Re: mesure vitesse

Message non luPosté: Mar 25 Sep 2012 03:46
de fabrice54
Stéphane a écrit:Bonjour,

Dans votre programme, vous sortez de la boucle while et commencez à compter si broche1 est à l'état bas.
Juste apres, vous rentrez dans votre if si broche1 est à l'état bas. Donc c'est normal que votre temps d'arrivée soit égal à votre temps de départ. Mettez avant votre if une condition while(broche1==bas), et remplacez votre condition if par juste les instruction à faire quand le comptage est terminé.

Bonne journée

bonjour.

merci pour vos informations.

cordialement
F.Thomas