| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 
 | #define echoPin 8 // déclaration de la Pin Echo sur la broche 8 de la carte arduino
#define trigPin 9 // déclaration de la Pin Trigger sur la broche 9 de la carte arduino
#define echoPin1 11 // déclaration de la Pin Echo sur la broche 11 de la carte arduino
#define trigPin1 12 // déclaration de la Pin Trigger sur la broche 12 de la carte arduino
 
float k; // déclaration de la variable " k " qui est égale à ( 1/2 * vitesse * cos Q ) de type réel (float)
float dist; // déclaration de la variable " dist " de type réel (float)
float tmoy; // déclaration d'une variable " tmoy " de type réel (float)
float Vit = 340.5; // déclaration de la variable " Vit " de type réel (float) et de valeur 340.5
 
int duree; // déclaration de la variable " duree " de type entier (integer)
int tmin = 32767; // déclaration de la constante "tmin" de valeur 32767 de type entier (integer) qui est la valeur maximale d'un entier positif signé (15 bits --> 32767 = 2^15 - 1)
int tmax = 0; // déclaration de la constante " tmax " de type entier (integer) et de valeur 0
int dmax = 80; // déclaration de la constante " dmax " de valeur 80 cm de type entier (integer)
int dmin = 15; // déclaration de la constante " dmin " de valeur 15 cm de type entier (integer)
int BUZZER = 10; // déclaration de la Pin de l'avertisseur sonore " BUZZER " sur la broche 10 de la carte arduino
 
 
void setup() // fonction setup - début de l'exécution du programme et définition des entrées et des sorties
{
  pinMode(trigPin, OUTPUT); // déclaration de la pin trig comme étant une étant une sortie
  pinMode(echoPin, INPUT); // déclaration de la pin echo comme étant une étant une entrée
  pinMode(trigPin1, OUTPUT); // déclaration de la pin trig comme étant une étant une sortie
  pinMode(echoPin1, INPUT); // déclaration de la pin echo comme étant une étant une entrée
  pinMode(BUZZER, OUTPUT); // déclaration de la pin du buzzer comme étant une sortie
 
  k = Vit / 20000;
  /*la valeur retournée par pulseIn est en microsecondes et la valeur de la vitesse est en m/s c'est pour cela qu'on a divisé la valeur de k par 10000 afin d'avoir la valeur en cm
    et ensuite on a redivisé la valeur de k par 2 pour n'avoir qu'un trajet*/
}
 
 
void loop() // s'exécute le programme en boucle sans fin
{
  tmin = 32767; // on définit la valeur de "tmin" à 32767
  tmax = 0; // on définit la valeur de "tmax" à 0
 
  /*on a redéfinit les valeurs de MinDur et MaxDur pour que ces deux variables prennent les valeurs de 32767 et 0 pendant chaque exécution de la fonction " loop " */
 
  for (int i = 0; i < 10; i++) // pour chaque nouvelle mesure , on va calculer la durée d'aller retour de l'onde 20 fois pour s'assurer de la valeur calculer par le capteur
  {
    digitalWrite(trigPin, LOW); // mettre la pin trig en niveau bas " 0 logique " ( 0 volt )
    delayMicroseconds(2); // niveau bas de la pin trig pendant 2 microsecondes pour garantir une impulsion HIGH propre
    digitalWrite(trigPin, HIGH); // mettre la pin trig en niveau haut " 1 logique " ( 5 volts )
    delayMicroseconds(10); // le capteur est déclenché par une impulsion émettrice HIGH de 10 microsecondes
    digitalWrite(trigPin, LOW); // mettre la pin trig en niveau bas " 0 logique " ( 0 volt )
    duree = pulseIn(echoPin, HIGH); // la fonction pulseIn attend que la broche echoPin passe au niveau HAUT,c'est à dire la réception d'une onde sur l'echo du capteur ultrasonique HC-04
 
    /*on va tesrer si la valeur de la durée est toujours dans la plage de mesure adéquate qui sera entre 0 et 32767*/
 
    if (duree > tmax)
    {
      tmax = duree;
    }
    else if (duree < tmin)
    {
      tmin = duree;
    }
 
    delay(50);// on fait un temps d'attente pour éviter les échos parasites
 
    /* ces tests sont faits pour s'aapprocher au maximum de la valeur réelle de la durée d'aller-retour de l'onde et de s'assurer que la valeur de la durée soit positive
      pour ensuite calculer la distance qui sera impérativement de valeur positive*/
  }
 
  tmoy = (tmax + tmin) / 2;
  /*on a déterminé les valeurs de tmax et tmin aprés 10 mesures successives et de la on va calculer la distance à partir de la formule
    Distance = k (vitesse) * durée (temps d'aller retour de l'onde) ,tout on fesant la moyenne de tmax et tmin afin d'approximer la valeur exacte de la durée d'aller retour de l'onde*/
  dist = tmoy * k;
 
 
 
  if (dist <= dmin) // si distance <= dmin (15cm) 
  {
    tone(BUZZER, 1000, 1000); // declanchement de l'avertisseur sonore
 
  }
  if ((dist >= dmin) and (dist <= dmax))// si distance >= dmin (15cm) et distance <= dmax(80cm)
 
  {
    tone(BUZZER, 500, 150); // declanchement de l'avertisseur sonore
 
  }
} | 
Partager