Bonjour à tous.
Je suis novice et j'ai besoin d'un bon coup de main.
J'ai trouvé sur ce programme sur le web, fait le câblage et tout fonctionne parfaitement.
Avec ce montage je souhaite stocker la mesure à la mise sous tension du circuit, mesurer la distance parcourue après une minute, et afficher la distance parcourue. ex: 5 mm/mn.
C'est un projet professionnel et votre aide est vraiment la bienvenue.
Voici e programme.
#include "LiquidCrystal.h"
#define VITESSE 340
// VÉRIFIEZ AVEC VOS PROPRES BROCHES
LiquidCrystal lcd(6,7,2,3,4,5); //liaison 4 bits de données
const int USTrig = 8; // Déclencheur sur la broche 8
const int USEcho = 9; // Réception sur la broche 9
void setup() {
lcd.begin(2, 16); // Initialisation de l’écran (2 lignes 16 caractères pour ma part)
pinMode(USTrig, OUTPUT);
pinMode(USEcho, INPUT);
lcd.print("-+ START +-");
delay(5000);
}
void loop() {
// 1. Un état haut de 10 microsecondes est mis sur la broche "Trig"
digitalWrite(USTrig, HIGH);
delayMicroseconds(10); //on attend 10 µs
// 2. On remet à l'état bas la broche Trig
digitalWrite(USTrig, LOW);
// 3. On lit la durée d'état haut sur la broche "Echo"
unsigned long duree = pulseIn(USEcho, HIGH);
if(duree > 30000)
{
//si la durée est supérieure à 30ms, l'onde est perdue
lcd.clear();
lcd.home(); // Replace le curseur en haut à gauche
lcd.print("Onde perdue :(");
lcd.setCursor(0,1);
lcd.print("Mesure echouee !");
}
else
{
// 4. On divise cette durée par deux pour n'avoir qu'un trajet
duree = duree/2;
// 5. On calcul la distance avec la formule d=v*t
unsigned int distance = duree*(VITESSE/1000.0); //on multiplie par la vitesse, d=t*v
// 6. On affiche !
lcd.clear();
lcd.home(); // Replace le curseur en haut à gauche
char message[16] = "";
sprintf(message, " Dist : %4d mm", distance);
lcd.print(message);
sprintf(message, "Temps : %4d us", duree);
lcd.setCursor(0,1);
lcd.print(message);
}
delay(800); // Petite pause
}