Projet de classe

Bonjour;
J'essaie de résoudre le problème ci-contre:
Réalisez un système mesurant une distance par ultrasons, et tenant compte de la température pour la vitesse de propagation des ultrasons (autres hypothèses : altitude 0 et air sec). La distance et la température seront affichés au moniteur série.
Attention : pour plus de précision vous prendrez deux capteurs de température et vous ferez leur moyenne. Si vous détecter un problème dans les capteurs (plus de 0.5°C d'écart), allumez une LED rouge.
Matériel : HC-SR04 + TMP36 + 74HC151 + Arduino

Pour résoudre le problème , Je propose l'algorithme suivant :

int Value1; 
int Value2;
int S0=1;
int S1=2;
double temps;//Or time
double distance;//Distance
double vitesse=0.034;//Speed

void setup()
{
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
digitalWrite(S1,LOW);
digitalWrite(S0, LOW);
pinMode(7, OUTPUT);
 digitalWrite(7, LOW);
 Serial.begin(9600);
  pinMode(2, OUTPUT);


}
void loop()
{
digitalWrite(S1,LOW);
digitalWrite(S0, LOW);
pinMode(7, OUTPUT); 
digitalWrite(7, HIGH);
delay(15);
digitalWrite(7, LOW);
digitalWrite(S0, HIGH);
digitalWrite(S1,LOW);
Serial.print("Capteur");
pinMode(7, INPUT);
temps=pulseIn(7, INPUT);
distance=(float)((vitesse*temps)/);
Serial.println("La distance est:")//The distance is 
Serial.print(distance);
digitalWrite(7, LOW);
digitalWrite(S0, LOW);
digitalWrite(S1,HIGH);
pinMode(7, INPUT); 
Value1=analogRead(7);
digitalWrite(S1,HIGH);
digitalWrite(S0,HIGH);
 pinMode(7, INPUT);
  Value2=analogRead(7);
  Serial.println("Premier capteur");
  Serial.print(Value1);
  Serial.println("Second capteur");
   Serial.print(Value2);
   if ( abs( Value1- Value2)<0.5)// Connected to led for blinking it 
   {
     pinMode(2, OUTPUT);
     digitalWrite(2,HIGH); 
     
   }

Pouvez vous me dire si il est correct s'il vous plait ?

AmathNoProjet:

 if ( abs( Value1- Value2)<0.5)// Connected to led for blinking it

Pouvez vous me dire si il est correct s'il vous plait ?

Le mieux c'est de tester, c'est évident, mais petite remarque, ton capteur ne renvoie probablement pas une température en degrés C, mais un indice, en fait c'est juste une tension renvoyée par ton capteur.

Bonjour;
J'essaie de résoudre le problème ci-contre:
Réalisez un système affichant sur le moniteur série les températures de 4 capteurs de température multiplexés dont la valeur sera lue sur le pin A2.
Attention : Si vous détecter un écart de plus de 0.5°C entre 2 capteurs, allumez une LED rouge.
Matériel : multiplexer 74hc151 , Carte Arduino et un TMP36 ;
Étant donné que je ne possède pas le matériel pour faire le test à mon domicile, je sollicite votre aide afin de valider mon codage arduino .

Consigne :

Il faut obligatoirement faire du multiplexage .
Le voici :

int Value1; 
int Value2;
int Value3;
int S0=2;
int S1=3;
int Value4;
void setup()
{
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
digitalWrite(S1,LOW);
  digitalWrite(S0, LOW);
  pinMode(A2, INPUT);
  pinMode(5, OUTPUT);
 digitalWrite(5,LOW);
}

void loop()
{
  digitalWrite(S1,LOW);
  digitalWrite(S0, LOW);
  pinMode(A2, INPUT);
  Value1=analogRead(A2);
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  pinMode(A2, INPUT);
  Value2=analogRead(A2);
   digitalWrite(S0, LOW);
    digitalWrite(S1,HIGH);
 pinMode(A2, INPUT);
 Value3=analogRead(A2);
 digitalWrite(S0, HIGH);
 digitalWrite(S1,HIGH);
 pinMode(A2, INPUT);
 Value4=analogRead(A2);
 if ( abs(Value1-Value2)<0.5 && abs(Value1- Value3)<0.5 && abs(Value1-Value4)<0.5 && abs(Value2- Value3)<0.5 && abs(Value2-Value4)<0.5 && abs(Value3-Value4)<0.5)
 {
  pinMode(5, OUTPUT);
 digitalWrite(5,HIGH);
 }

Merci de me dire si le codage convient ou non .
Merci éventuellement de m'aider a le modifier .

Mais comment faire dans ce cas ?

Si tu as le droit d'utiliser des bibliothèques, profites-en !
Il existe une bibli qui permet d'utiliser plusieurs HC-SR04 de manière simple, cherche sur internet tu la trouveras facilement. De même pour tes capteurs de température

Avant de parler codage je pense qu'il faut parler choix du matériel.
Tu indiques :

  • 4 capteurs TMP36
  • un multiplexeur 74HC151

Si le 74HC151 est prévu pour multiplexer les 4 TMP36 cela me surprendrait que cela fonctionne.
Le capteur TMP36 est un capteur analogique qui délivre 10 mV par degré.
Le multiplexeur 74HC151 est un multiplexeur numérique qui n'accepte que des niveaux à la norme 74HC.

Il faudrait un multiplexeur analogique.

Attention : Si vous détecter un écart de plus de 0.5°C entre 2 capteurs, allumez une LED rouge.

Quelques conseils pratiques.
Une différence de 0,5°C c'est seulement 5mV.
5mV c'est vite gagné ou perdu en fonction du câblage --> il faut impérativement utiliser un fil de masse par TMP36 et n'y raccorder aucun autre composant.
Bien évidement il faut lire la datasheet entièrement : selon les lots de fabrication, la valeur absolue peut varier de +/- 2 °C.
Une mesure de la dispersion entre les 4 capteurs sera à prévoir.

Salut,

Une recherche sur Google aurait pris 5 s pour trouver du code qui puisse faire fonctionner le HC-SR04 et cela sans bilbilothéque : HC-SR04

Concernant le capteur de T° : celui retourne une tension proportionnelle à la Tempétature :

Tuto TMP36 et arduino

Par contre pourquoi utiliser : 74HC151 ??, est ce pour les deux TMP36

@+

Salut,

Tu as déja un Topic (projet classe 1) ouvert concernant quasiment la même problématique, cela serait plus cohérent de poser les questions au même endroit.

@+

hameau:
Salut,

Une recherche sur Google aurait pris 5 s pour trouver du code qui puisse faire fonctionner le HC-SR04 et cela sans bilbilothéque : HC-SR04

Concernant le capteur de T° : celui retourne une tension proportionnelle à la Tempétature :

Tuto TMP36 et arduino

Par contre pourquoi utiliser : 74HC151 ??, est ce pour les deux TMP36

@+

Bonsoir hameau

te stresse pas ,les dernières epreuves du bac 2018 ce sont terminées... aujourd'hui 8)

Vous n’avez pas dit sur le forum anglais qu’il fallait virer ce post?

Et aussi sur le forum anglais...