Go Down

Topic: [Résolu] Affichage Horloge problème --> 14:7:589 (Read 2685 times) previous topic - next topic

gunsman76

Apr 27, 2013, 02:14 pm Last Edit: Apr 27, 2013, 10:02 pm by gunsman76 Reason: 1
Bonjour à tous,

J'ai un module DS 1307 qui m'affiche l'heure la date et l'heure sur la première ligne d'un LCD 4 lignes. Tout fonctionne parfaitement mais j'ai un problème d'affichage qui me gêne un peu.


Par exemple, lorsque les secondes passent de 59 à 0, j'ai l'affichage 09,19,29,39 etc... jusqu'à ce que les secondes reviennent à 10.

Et c'est encore pire si les minutes passent de 2 chiffres à 1 chiffre. j'arrive à un affichage extrème de 14:7:589.


Il y a t'il la possibilité de faire un affichage 00:00:00 et de rafraichir l'affichage de l'horloge dans passer par la commande lcd.clear toutes les secondes ?

B@tto

Bin mettre des espaces à la place des caractères
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

gunsman76

voilà mon code pour l'affichage :

Code: [Select]
 
  DateTime now = RTC.now();
  lcd.home ();
  lcd.print (now.day(),DEC);
  lcd.print("/");
  lcd.print (now.month(),DEC);
  lcd.print("/");
  lcd.print (now.year(),DEC);
  lcd.print("  ");
  lcd.print (now.hour(),DEC);
  lcd.print(":");
  lcd.print(now.minute(), DEC);
  lcd.print(":");
  lcd.print(now.second(), DEC);
 

skywodd

Bonjour,

La solution consiste à faire un affichage avec un format codé "en dure".

Exemple :
Code: [Select]
lcd.setCursor(4, 0); // Place le curseur à (0,4) (juste aprés les 3 lettres du jour + espace)
  lcd.print(date->jour / 10, DEC);// Affichage du jour sur deux caractères
  lcd.setCursor(5, 0);
  lcd.print(date->jour % 10, DEC);
  lcd.setCursor(6, 0);
  lcd.print(" / ");
  lcd.setCursor(9, 0);
  lcd.print(date->mois / 10, DEC);// Affichage du mois sur deux caractères
  lcd.setCursor(10, 0);
  lcd.print(date->mois % 10, DEC);
  lcd.setCursor(11, 0);
  lcd.print(" / ");
  lcd.setCursor(14, 0);
  lcd.print(date->annee / 10, DEC);// Affichage de l'année sur deux caractères
  lcd.setCursor(15, 0);
  lcd.print(date->annee % 10, DEC);
   
  clear(1, 0, 16); // Efface la 2eme ligne de l'écran
  lcd.setCursor(0, 1); // Place le curseur en début de la 2eme ligne
  lcd.print(date->heures / 10, DEC); // Affichage de l'heure sur deux caractères
  lcd.setCursor(1, 1);
  lcd.print(date->heures % 10, DEC);
  lcd.setCursor(2, 1);
  lcd.print(" : ");
  lcd.setCursor(5, 1);
  lcd.print(date->minutes / 10, DEC); // Affichage des minutes sur deux caractères
  lcd.setCursor(6, 1);
  lcd.print(date->minutes % 10, DEC);
  lcd.setCursor(7, 1);
  lcd.print(" : ");
  lcd.setCursor(10, 1);
  lcd.print(date->secondes / 10, DEC); // Affichage des secondes sur deux caractères
  lcd.setCursor(11, 1);
  lcd.print(date->secondes % 10, DEC);

http://skyduino.wordpress.com/2012/01/07/tutoriel-arduino-horloge-rtc-ds1307-librairie-liquidcrystal/
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

gunsman76

Super !


Je me suis un peu arraché les cheveux, mais en suivant ton raisonnement j'ai réussi. Merci !!!!


voilà le résultat pour un affichage 00:00:00


Code: [Select]
  DateTime now = RTC.now();
  lcd.home ();
  lcd.print (now.day()/10,DEC);
  lcd.print (now.day()%10,DEC);
  lcd.print("/");
  lcd.print (now.month()/10,DEC);
  lcd.print (now.month()%10,DEC);
  lcd.print("/");
  lcd.print (now.year(),DEC);
  lcd.print("  ");
  lcd.print (now.hour()/10,DEC);
  lcd.print (now.hour()%10,DEC);
  lcd.print(":");
  lcd.print(now.minute()/10, DEC);
  lcd.print(now.minute()%10, DEC);
  lcd.print(":");
  lcd.print(now.second()/10, DEC);
  lcd.print(now.second()%10, DEC);

 

Go Up