bonjour,
j’ai édité le programme afin de prendre en compte les mesures de distance avec deux télémètres . Sur un point 0 virtuel , un télémètre mesure la distance haute et l’autre la distance basse. Je voudrais par conséquent additionner la mesure haute et la mesure basse afin de me donner sur l’écran lcd la mesure total additionnée des deux ….et j’y arrive pas. Pour l’instant les distances de chaque télémètre se lis sur l’ecran ligne 1(capteur haut) et ligne 2(capteur bas). merci de m’aiguiller de formule afin de pouvoir finir mon projet et de n’afficher que la distance total des deux mesures
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int USTrigHaut(6);
const int USEchoHaut(7);
const int USTrigBas(9);
const int USEchoBas(8);
float VITESSE =340;
void setup() {
// LCD
lcd.begin(2,16);
// Message de demarage
lcd.setCursor(2,0);
lcd.print("LASER V2");
lcd.setCursor(4,1);
lcd.print("by LMg");
delay(9000);
lcd.clear();
// telemetre SR04 1
pinMode(USTrigHaut, OUTPUT);
pinMode(USEchoHaut, INPUT);
// telemetre SR04 2
pinMode(USTrigBas, OUTPUT);
pinMode(USEchoBas, INPUT);
lcd.setCursor(0,0); // Curseur positionné ligne "0" 1er caractère
}
void loop() {
{ // capteur haut
// 1. Un état haut de 10 microsecondes est mis sur la broche "Trig"
digitalWrite(USTrigHaut, HIGH);
delayMicroseconds(10); //on attend 10 µs
// 2. On remet à l’état bas la broche Trig
digitalWrite(USTrigHaut, LOW);
// 3. On lit la durée d’état haut sur la broche "Echo"
unsigned long duree = pulseIn(USEchoHaut, HIGH);
if(duree > 30000)
{
// si la durée est supérieure à 30ms, l'onde est perdue
lcd.setCursor(0,0);
lcd.print ("Err.: Dist > 4m");
delay(500);
lcd.clear();
}
else
{
// 4. On divise cette durée par deux pour n'avoir qu'un trajet
duree = duree/2;
// 5. On calcule la distance avec la formule d=v*t
float temps = duree/10000.0; //on met en secondes
float dist = temps*VITESSE ; //on multiplie par la vitesse, d=t*v et on ajoute la largeur du boitier (qui compte pour la mesure)
// 6. On affiche la distance
lcd.setCursor(0,0);
lcd.print ("Dist: ");
lcd.setCursor(8,0);
lcd.print (dist);
}
// petite pause
delay(250);
}
{
// capteur bas
// 1. Un état haut de 10 microsecondes est mis sur la broche "Trig"
digitalWrite(USTrigBas, HIGH);
delayMicroseconds(10); //on attend 10 µs
// 2. On remet à l’état bas la broche Trig
digitalWrite(USTrigBas, LOW);
if(duree > 30000)
{
// si la durée est supérieure à 30ms, l'onde est perdue
lcd.setCursor(0,0);
lcd.print ("Err.: Dist > 4m");
delay(500);
lcd.clear();
}
else
{
// 4. On divise cette durée par deux pour n'avoir qu'un trajet
duree = duree/2;
// 5. On calcule la distance avec la formule d=v*t
float temps = duree/10000.0; //on met en secondes
float dist = temps*VITESSE ; //on multiplie par la vitesse, d=t*v et on ajoute la largeur du boitier (qui compte pour la mesure)
// 6. On affiche la distance
lcd.setCursor(0,1);
lcd.print ("Dist: ");
lcd.setCursor(8,1);
lcd.print (dist);
}
// petite pause
delay(250);
}
}
+0
-0