Bonjour à tous. Je m'initie à l'arduino et je veux réaliser un radar de recul automobile paramétrable.
J'ai fait fonctionner un capteur mais pour en rajouter un autre j'ai du mal à voir comment je les rends sélectifs. De plus je veux en mettre 4 !!
Merci de m'apporter votre aide. Je suis débutant dans l'Arduino donc soyez indulgents !!
Voivi le code de départ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
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
 
  }
}