Bonjour,
actuellement en réalisation d'un système télémètre, je rencontre un soucis.
je dispose du matériel nécessaire pour réaliser ce montage.
Mon problème est le suivant, en suivant le tutoriel d'Eskimon sur le télémètre, j'ai réalisé la programmation, la simulation arduino me donne en effet des valeurs précise mais rien ne s'affiche sur le LCD, seul la première ligne de sans caractère apparaît.
Voici mon programme:
#include "LiquidCrystal.h"
#define VITESSE 340
// VÉRIFIEZ AVEC VOS PROPRES BROCHES
LiquidCrystal lcd(6,7,5,4,3,2); //liaison 4 bits de données
const int USTrig = 9; // Déclencheur sur la broche 8
const int USEcho = 10; // 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(" TELEMETRE ");
digitalWrite(USTrig, LOW);
Serial.begin(9600);
}
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
float temps = duree/1000000.0; //on met en secondes
float distance = temps*VITESSE; //on multiplie par la vitesse, d=t*v
// 6. On affiche
Serial.print("Duree = ");
Serial.println(temps); //affiche le temps de vol d'un trajet en secondes
Serial.print("Distance = ");
Serial.println(distance); //affiche la distance mesurée (en mètres)
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(250); // Petite pause
}
Si quelqu’un pourrait m'aider a trouver la cause,
en vous remerciant,
cordialement