Go Down

Topic: Probleme LCD (Read 343 times) previous topic - next topic

remit11

Apr 20, 2019, 02:38 pm Last Edit: Apr 23, 2019, 10:21 am by remit11
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 ! :)

Code: [Select]

/* 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);
 
}

kamill

Bonjour,

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

remit11

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

dbrion06

Essayez ceci
Code: [Select]

 // 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)

dfgh

hello
Code: [Select]

/*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:
Code: [Select]

#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() {}



remit11

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

Go Up