Probleme LCD

Bonjour, je travaille sur un capteur à ultrasons avec une carte arduino uno, j’arrive a faire et voir les mesure sur le moniteur série mais pas a les afficher sur un LCD, et je ne sais pas pourquoi, merci de votre aider ! :slight_smile:

/* Constantes pour les broches */
const byte TRIGGER_PIN = 2; // Broche TRIGGER
const byte ECHO_PIN = 3;    // Broche ECHO
 
/* Constantes pour le timeout */
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s

/* Vitesse du son dans l'air en mm/us */
const float SOUND_SPEED = 340.0 / 1000;

/*Afficheur LCD
 */
 #include <LiquidCrystal.h> 
  LiquidCrystal lcd(12,11,5,4,3,2);

  
/** Fonction setup() */
void setup() {
   /* Initialise le port série */
    lcd.begin(16,2);
    
  /* Initialise le port série */
  Serial.begin(115200);
   
  /* Initialise les broches */
  pinMode(TRIGGER_PIN, OUTPUT);
  digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos
  pinMode(ECHO_PIN, INPUT);
}
 
/** Fonction loop() */
void loop() {
  
  /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */
  digitalWrite(TRIGGER_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIGGER_PIN, LOW);
  
  /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */
  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);
   
  /* 3. Calcul la distance à partir du temps mesuré */
  float distance_mm = measure / 2.0 * SOUND_SPEED;
   
  /* Affiche les résultats en mm, cm et m */
  Serial.print(F("Distance: "));
  Serial.print(distance_mm);
  Serial.print(F("mm ("));

   
  /* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */
  delay(500);

  /*Print lcd*/
  lcd.display();
  lcd.setCursor(0,0);
  lcd.print(distance_mm);
  lcd.clear();
  delay(1000);
  
}

Bonjour,

Tu effaces le lcd juste après avoir écrit. Normal que tu ne voies rien

merci du conseil, je l'ai enlevé mais ca n'affiche toujours rien, et je me rapelle que j'avais mis un clear avant et que ca avait marché, j'avais malheuresement perdu le code, du coup es que vous auriez un autre conseil ? merci encore de votre aide

Essayez ceci

 // lcd.display(); // quelle bbliotèque utilisez vous? lcd n'a pas de display() ....
 // lcd.setCursor(0,0);
 // lcd.print(distance_mm);
 // lcd.clear();
 // delay(1000);

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("salut"); // ensuite, essayer lcd.print(distance_mm);
  delay(1000);

Votre capteur US va-t-il rééllement jusqu'à 8 mètres? (je sais, c'est hors sujet)

hello

/*Print lcd*/
  //lcd.display();//inutile
  lcd.setCursor(0,0);//curseur en haut à gauche
  lcd.print("                ");//efface la distance_mm précédemment inscrite
  lcd.setCursor(0,0);//curseur en haut à gauche
  lcd.print(distance_mm);affiche la "distance_mm"
  //lcd.clear();//à virer impérativement
  delay(1000);//delai de 1 seconde

nota:
tu utilses un code qui reprends les initialisations du lcd de l’exemple “hello world”
donc avec un shield lcd avec les 6 boutons poussoirs.
LiquidCrystal lcd(12,11,5,4,3,2);

j’en ai un qui n’a pas la meme initialisation pour le lcd.
il lui faut:
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

testes ce code:

#include <LiquidCrystal.h>
//LiquidCrystal lcd(12,11,5,4,3,2);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup() {
  lcd.begin(16,2);
  lcd.print("ceci est un test");
}

void loop() {}

le probleme venait bien de l'initialisation ^^ je pensais aussi que ca venait de la et j'était aller voir sur des sites mais je n'ai pas encore compris comment ca marche, merci énormement pour vos conseils et votre temps ! je reviendrai sur ce forum qui m'aide deja bcp des le début de mon apprentissage