Bonjour,
J'ai utiliser le code du lien suivant : https://www.gotronic.fr/pj2-35191-vma306-ultrasonic-1512.pdf afin de mesurer la distance à un obstacle d'une "voiture" ainsi que sa vitesse selon différentes unités. Voici le code modifié :
// Définition des ports
int trig = 13;
int echo = 12;
// Variables
long duree; // duree echo
int D; //distance à l'obstacle
float V; //vitesse par cm/µs
float Vk; //vitesse en km/h
float Vm; //vitesse en m/s
float prevD; // distance précedente
void setup() {
// put your setup code here, to run once:
Serial.begin (9600);
pinMode(trig, OUTPUT);
digitalWrite(trig, LOW);
pinMode(echo, INPUT);
}
void vitesse () {
V = (prevD - D ) / duree ; // calcul de la vitesse en cm/µs
Serial.print(V * 1000000);
Serial.print("cm/s :");
Serial.print(" ");
Vm = V * 0.01; // calcul de la vitesse en m/s
Serial.print(Vm);
Serial.print("m/s :");
Serial.print(" ");
Vk = V * 0.036; // calcul de la vitesse en km/h
Serial.print(Vk);
Serial.print("km/h");
Serial.print(" ");
}
void loop() {
prevD = D; // on donne la valeur précedente
digitalWrite(trig, LOW);
delayMicroseconds(5);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duree = pulseIn(echo, HIGH); // Echo
Serial.print("durée: ");
Serial.print(duree);
Serial.print("µs;");
D = duree * 0.034 / 2; // calcule de la distance (le son parcourt environ 340 mètre par seconde soit 0.034 centimètre par microsecondes)
// Affichage
Serial.print("Distance : ");
Serial.print(D);
Serial.println("cm");
vitesse();
}
J'obtiens une bonne distance ainsi qu'une vitesse en cm/s mais le programme me donne une vitesse nul en m/s et en km/h.
16:35:43.718 -> -843.17cm/s : -0.00m/s : -0.00km/h durée: 1301µs;Distance : 22cm
16:35:43.812 -> -1537.28cm/s : -0.00m/s : -0.00km/h durée: 1439µs;Distance : 24cm
16:35:43.858 -> -1389.85cm/s : -0.00m/s : -0.00km/h durée: 1637µs;Distance : 27cm
16:35:43.951 -> -1832.62cm/s : -0.00m/s : -0.00km/h durée: 1867µs;Distance : 31cm
16:35:43.998 -> -2142.47cm/s : -0.00m/s : -0.00km/h durée: 2076µs;Distance : 35cm
16:35:44.091 -> -1926.78cm/s : -0.00m/s : -0.00km/h durée: 2277µs;Distance : 38cm
16:35:44.138 -> -1317.52cm/s : -0.00m/s : -0.00km/h durée: 2593µs;Distance : 44cm
16:35:44.232 -> -2313.92cm/s : -0.00m/s : -0.00km/h durée: 2604µs;Distance : 44cm
16:35:44.278 -> 0.00cm/s : 0.00m/s : 0.00km/h durée: 2596µs;Distance : 44cm
16:35:44.372 -> 0.00cm/s : 0.00m/s : 0.00km/h durée: 2610µs;Distance : 44cm
16:35:44.419 -> 0.00cm/s : 0.00m/s : 0.00km/h durée: 2590µs;Distance : 44cm
16:35:44.511 -> 0.00cm/s : 0.00m/s : 0.00km/h durée: 2580µs;Distance : 43cm
16:35:44.558 -> 387.60cm/s : 0.00m/s : 0.00km/h durée: 2204µs;Distance : 37cm
16:35:44.652 -> 2722.32cm/s : 0.00m/s : 0.00km/h durée: 1918µs;Distance : 32cm
16:35:44.699 -> 2606.88cm/s : 0.00m/s : 0.00km/h durée: 1679µs;Distance : 28cm
16:35:44.746 -> 2382.37cm/s : 0.00m/s : 0.00km/h durée: 1470µs;Distance : 24cm
16:35:44.840 -> 2721.09cm/s : 0.00m/s : 0.00km/h durée: 1328µs;Distance : 22cm
16:35:44.885 -> 1506.02cm/s : 0.00m/s : 0.00km/h durée: 1165µs;Distance : 19cm
16:35:44.978 -> 2575.11cm/s : 0.00m/s : 0.00km/h durée: 1094µs;Distance : 18cm
16:35:45.025 -> 914.08cm/s : 0.00m/s : 0.00km/h durée: 1056µs;Distance : 17cm
16:35:45.119 -> 946.97cm/s : 0.00m/s : 0.00km/h durée: 1032µs;Distance : 17cm
16:35:45.165 -> 0.00cm/s : 0.00m/s : 0.00km/h durée: 1049µs;Distance : 17cm
Je ne sais pas si c'est un problème de programmation ou si la carte arduino ne peut pas traiter le calcul.
Merci pour votre aide.