problème d'affichage écran lcd arduino mega

Bonjour,
je viens vers vous car j’ai un problème avec écran en faite je dois afficher l’heure
sur la première ligne .Le code fonctionne avec le moniteur série mais quand je le passe
sous mon écran 1602 ,il me met l’heure mais l’heure bouge de place et elle descend sous la deuxième
ligne et il affiche un caractère spécial (je n’arrive pas a mettre une photo).

Merci de votre aide :slight_smile: .

#include <LiquidCrystal.h>
#include <Wire.h>
#include <DS3231.h>

DS3231 clock;
RTCDateTime dt;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup() {
  
   lcd.begin(16, 2);
   
   lcd.setCursor(0,0);
   lcd.println("Initialize DS3231");;
   clock.begin();
   clock.setDateTime( __TIME__ );

}

void loop() {
  
  dt = clock.getDateTime();
  lcd.print(clock.dateFormat("H:i:s", dt));
  lcd.println();
  delay(1000);

}

Salut

Il faut positionner le curseur avant d’afficher :

  lcd.setCursor(0,0);
  lcd.print(clock.dateFormat("H:i:s", dt));

Salut,

J'ai fais une petite fonction assez simple pour ce genre d'usage,
Tu peux t'en inspirer pour comprendre comment ça marche :

void FEcran(String FEcran1, String FEcran2) {
  // -------------------------------------------
  // - Description :
  //    Permet d'afficher un message sur l'écran
  // - Variables :
  //    FEcran1 = "Primère ligne"
  //    FEcran2 = "Deuxième ligne"
  // - Retourne :
  //    NC
  // -------------------------------------------
  if (Memo_Ecran != FEcran1 + FEcran2) {
    Memo_Ecran = FEcran1 + FEcran2;
    if (FEcran1 != "NULL") {
      lcd.setCursor(0, 0);
      lcd.print("                "); // Raz de la ligne
      lcd.setCursor(0, 0);
      lcd.print(FEcran1);
    }
    if (FEcran2 != "NULL") {
      lcd.setCursor(0, 1);
      lcd.print("                "); // Raz de la ligne
      lcd.setCursor(0, 1);
      lcd.print(FEcran2);
    }
  }
}