mesure vitesse

mesure vitesse

Message non lude fabrice54 » Lun 10 Sep 2012 06:49

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);
}

fabrice54
 
Messages: 16
Inscription: Mar 10 Juil 2012 04:49

Re: mesure vitesse

Message non lude Stéphane » Lun 10 Sep 2012 08:54

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
Avatar de l’utilisateur
Stéphane
 
Messages: 179
Inscription: Lun 2 Mai 2011 09:40

Re: mesure vitesse

Message non lude fabrice54 » Mar 25 Sep 2012 03:46

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
fabrice54
 
Messages: 16
Inscription: Mar 10 Juil 2012 04:49


Retourner vers Logiciel Arduino

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron