Affichage heure LCD

Bonjour, je débute (un peu comme la plupart des personne ici) en arduino, et j’aimerai afficher l’heure sur mon LCD (1602 relié en I2C), j’utilise un DS3231 avec cette librairie.

Tout marche nickel mais le problème c’est que en pssant de 59 secondes à une seconde, ça m’affiche " 19, 29, 39" etc.
Et en passant de 59 min à 1 min, c’est encore pire, ça m’écrit 12:1: avec 3 chiffres de secondes derrière.
Et j’aimerai aussi si possible afficher l’heure en 00:00:00, merci !

Et petite question y’a moyen de désactiver le rétroéclairage de mon LCD sans rien y voir ?

Le code :

 #include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <ds3231.h>
struct ts t;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {

Serial.begin(9600);
Wire.begin();
lcd.begin(); 
lcd.backlight();
}

void loop() {

     lcd.setCursor(0,0);
     DS3231_get(&t);
  lcd.print("Il est ");
  lcd.print(t.hour);
  lcd.print(":");
  lcd.print(t.min);
  lcd.print(":");
  lcd.print(t.sec);
} [ /Code]

et votre code est… ?

(le bug classique c’est que vous n’affichez sans doute pas les nombres sur 2 symboles et donc quand vous avez 59 et que vous passez à 1 il reste le 9 que vous n’avez pas effacé → si le nombre à afficher est plus petit ou égal à 9 il faut d’abord afficher un espace, puis le nombre)

Bonjour,

Il faut que tu formates ton résultat pour avoir toujours le même nombre de chiffres ou que tu affiches un espace à la fin pour effacer le chiffre supplémentaire.
Difficile de te répondre plus précisément sans avoir ton code.

J-M-L:
et votre code est.... ?

(le bug classique c'est que vous n'affichez sans doute pas les nombres sur 2 symboles et donc quand vous avez 59 et que vous passez à 1 il reste le 9 que vous n'avez pas effacé --> si le nombre à afficher est plus petit ou égal à 9 il faut d'abord afficher un espace, puis le nombre)

kamill:
Bonjour,

Il faut que tu formates ton résultat pour avoir toujours le même nombre de chiffres ou que tu affiches un espace à la fin pour effacer le chiffre supplémentaire.
Difficile de te répondre plus précisément sans avoir ton code.

Désolé j'ai poster sans faire exprès le topic sans l'avoir fini, tout y est maintenant :wink:

oui vous oubliez donc bien l’espace

  lcd.print(t.hour);
  lcd.print(":");
  lcd.print(t.min);
  lcd.print(":");
  lcd.print(t.sec);

un truc comme ça ressemblera plus à ce que vous voyez sur un radio-réveil (avec des 0 sur les min et sec)

if (t.hour < 10) lcd.print(" ");
lcd.print(t.hour); lcd.print(":");
if (t.min < 10) lcd.print("0");
lcd.print(t.min); lcd.print(":");
if (t.sec < 10) lcd.print("0");
lcd.print(t.sec)

et si vous voulez éviter que ça clignote un peu, rafraîchissez uniquement les caractères qui doivent changer

J-M-L:
oui vous oubliez donc bien l’espace

  lcd.print(t.hour);

lcd.print(":");
 lcd.print(t.min);
 lcd.print(":");
 lcd.print(t.sec);




un truc comme ça ressemblera plus à ce que vous voyez sur un radio-réveil (avec des 0 sur les min et sec)


if (t.hour < 10) lcd.print(" “);
lcd.print(t.hour); lcd.print(”:");
if (t.min < 10) lcd.print(“0”);
lcd.print(t.min); lcd.print(":");
if (t.sec < 10) lcd.print(“0”);
lcd.print(t.sec)




et si vous voulez éviter que ça clignote un peu, rafraîchissez uniquement les caractères qui doivent changer

Super ! Merci beaucoup ! :slight_smile:

Et quelqu’un ne saurai pas par hasard comment éteindre le rétroéclairage en laissant les caractètes visibles ? ou un moyen de baisser la consommation ?

PatroCuite:
Et quelqu'un ne saurai pas par hasard comment éteindre le rétroéclairage en laissant les caractètes visibles ? ou un moyen de baisser la consommation ?

dans le setup() vous avez lcd.backlight(); regardez ce que fait cette fonction et si par hasard elle n'aurait pas une fonction inverse, du genre noBacklight().... on ne sait jamais... :slight_smile:

J-M-L:
dans le setup() vous avez lcd.backlight(); regardez ce que fait cette fonction et si par hasard elle n'aurait pas une fonction inverse, du genre noBacklight().... on ne sait jamais... :slight_smile:

Oui ça je sais mais si je mets ça je ne voit quasi rien, et moi je veux juste désactiver le rétroéclairage pour moins consommer mais en pouvant voir quand même

PatroCuite:
Oui ça je sais mais si je mets ça je ne voit quasi rien, et moi je veux juste désactiver le rétroéclairage pour moins consommer mais en pouvant voir quand même

il y a un potentiomètre physique derrière votre écran sans doute (la petite vis cruciforme dans le machin bleu)

J-M-L:
il y a un potentiomètre physique derrière votre écran sans doute (la petite vis cruciforme dans le machin bleu)

Je l’ai tourné et rien à faire on y voit pas grand chose, le cavalier n’est pas mis, je sais pas si ça peut jouer.

le cavalier tout à gauche sert pour la backlight. faut le mettre (enfin suivant comment votre adaptateur I2C est fichu)

J-M-L:
le cavalier tout à gauche sert pour la backlight. faut le mettre (enfin suivant comment votre adaptateur I2C est fichu)

Je peux pas le mettre, enfaite j'ai reçu l'écran avec les pins soudés, et le I2C aussi, ducoup ils sont éloignés et je les aient reliés avec des dupont-wire femelle.

Sur les interfaces I2C courantes (telle que montrée par J-M-L), la fonction nobacklight() fonctionne, mais on n'y voit pas grand chose sans backlight.
Si tu enlèves le cavalier ça supprime l'éclairage du backlight (le potentiomètre bleu est pour le contraste).
Il est possible de piloter le backlight en PWM en otant le cavalier et en reliant le coté du cavalier marqué LED à une broche PWM de la carte arduino.

Salut

je veux juste désactiver le rétroéclairage pour moins consommer

Le backlight consomme environ 20mA.

Mais quel est le but final ? Alimenter par batterie ?

@+

hbachetti:
Salut

Le backlight consomme environ 20mA.

Mais quel est le but final ? Alimenter par batterie ?

@+

Oui je vais mettre le montage sur batterie, mais si ça consomme que 20mA ça va aller, mais je vois souvent plutot du 120-160 mA, comme ici par exemple

Je viens de brancher un afficheur LCD 1602 sur une NANO.
Avec backlight : 50mA
Sans backlight : 30mA

Un montage de ce type consommera donc sans backlight : 0.03 x 24 = 0,72 AH par jour donc 260AH par an.
Impensable. Il va falloir songer à alimenter par le secteur.
A moins qu'il ne s'agisse d'une alimentation de secours dans le cas où le secteur disparaisse ?

@+

hbachetti:
Je viens de brancher un afficheur LCD 1602 sur une NANO.
Avec backlight : 50mA
Sans backlight : 30mA

Un montage de ce type consommera donc sans backlight : 0.03 x 24 = 0,72 AH par jour donc 260AH par an.
Impensable. Il va falloir songer à alimenter par le secteur.
A moins qu'il ne s'agisse d'une alimentation de secours dans le cas où le secteur disparaisse ?

@+

C'est bien sur batterie, mais je compte l'éteindre la nuit et quand je suis pas là en débranchant la batterie de la prise jack, et je serai donc plus autour de ~5h/jour , donc si l'écran avec blacklight = 50 ça me ferait ~100mAh.

Donc je tiens 20h, 20:5 ça me fait donc plutot 4 jours d'autonomie, et au bout des 4 jours j'ai juste à recharger les piles :wink:

Il faut avoir à l'esprit qu'une batterie, quel que soit son type ne supporte pas une décharge trop profonde.
En dessous d'une certaine tension, sa durée de vie diminue. Si elle tombe à zéro, elle peut être définitivement HS.

@+

Même pour les piles (j'ai celles-là) ? J'utilise aussi ça, je sais pas si ça peut jouer. Là je les aient utilisés pendant 10h pour tester, théoriquement elle pourraient encore tenir le double.

Une batterie LITHIUM-ION meurt aussi si on la vide complètement.

Qu’est ce qui t’empêche d’utiliser un chargeur USB 5V ?

@+