Gros chiffres LCD

Bonjour à tous,

Je voudrais afficher la valeur d'une variable sur un afficheur LCD 2004.
Ma variable est positive et va au maximum jusqu'a 999 et je voudrais l'afficher sur deux rangées de l'afficheur.

Voici l'idée de depart de mon projet:

http://forum.semageek.com/viewtopic.php?id=967

J'ai essayé d'isoler au maximum la partie du code qui m'intéresse.

Il y a quelques sujet sur ces caractères à deux rangées mais tous en anglais.
N'étant pas expert dans le codage, je souhaite éviter la gestion d'une bibliothèque, ou alors une sûre, car j'ai deja fais des essais non concluants avec des "**BigFont".

Voici mon code :

byte mavar= 125;


#include <LiquidCrystal.h>


LiquidCrystal lcd(11,12,5,4,3,2); // Initialisation de la librairie Liquid Crystal

// gestion gros charactère
byte degre[8] = { B01000, B10100, B01000, B00111, B01000, B01000, B01000, B00111}; // °C
byte endJauge[8] = { B11111, B00001, B00001, B00001, B00001, B00001, B00001, B11111 }; // ]
byte startJauge[8] = { B11111, B10000, B10000, B10000, B10000, B10000, B10000, B11111 }; // [
byte fullJauge[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111 }; // carré plein
byte emptyJauge[8] = { B11111, B00000, B00000, B00000, B00000, B00000, B00000, B11111 }; // carré vide
byte haut[8] = { B11111, B11111, B00000, B00000, B00000, B00000, B00000, B00000 }; // trait en haut
byte bass[8] = { B00000, B00000, B00000, B00000, B00000, B00000, B11111, B11111 }; // trait en bas
byte lesDeux[8] = { B11111, B11111, B00000, B00000, B00000, B00000, B11111, B11111 }; // les deux

void bigFontBegin(){
lcd.createChar(0, degre);
lcd.createChar(1, startJauge);
lcd.createChar(2, endJauge);
lcd.createChar(3, fullJauge);
lcd.createChar(4, emptyJauge);
lcd.createChar(5, haut);
lcd.createChar(6, bass);
lcd.createChar(7, lesDeux);
}

  
void unHaut(){
  lcd.write(byte(5));
  lcd.write(byte(3));
  lcd.print(" ");
}
void unBas(){
  lcd.write(byte(6));
  lcd.write(byte(3));
  lcd.write(byte(6));
}

void deuxHaut(){
  lcd.write(byte(7));
  lcd.write(byte(7));
  lcd.write(byte(3));
}
void deuxBas(){
  lcd.write(byte(3));
  lcd.write(byte(6));
  lcd.write(byte(6));
}
void troisHaut(){
  lcd.write(byte(5));
  lcd.write(byte(7));
  lcd.write(byte(3));
}
void troisBas(){
  lcd.write(byte(6));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void quatreHaut(){
  lcd.write(byte(3));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void quatreBas(){
  lcd.print(" ");
  lcd.print(" ");
  lcd.write(byte(3));
}
void cinqHaut(){
  lcd.write(byte(3));
  lcd.write(byte(7));
  lcd.write(byte(7));
}
void cinqBas(){
  lcd.write(byte(6));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void sixHaut(){
  lcd.write(byte(3));
  lcd.write(byte(7));
  lcd.write(byte(7));
}
void sixBas(){
  lcd.write(byte(3));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void septHaut(){
  lcd.write(byte(5));
  lcd.write(byte(5));
  lcd.write(byte(3));
}
void septBas(){
  lcd.print(" ");
  lcd.print(" ");
  lcd.write(byte(3));
}
void huitHaut(){
  lcd.write(byte(3));
  lcd.write(byte(7));
  lcd.write(byte(3));
}
void huitBas(){
  lcd.write(byte(3));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void neufHaut(){
  lcd.write(byte(3));
  lcd.write(byte(7));
  lcd.write(byte(3));
}
void neufBas(){
  lcd.write(byte(6));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void zeroHaut(){
  lcd.write(byte(3));
  lcd.write(byte(5));
  lcd.write(byte(3));
}
void zeroBas(){
  lcd.write(byte(3));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void setup() 
{
 lcd.begin(20, 4);
  lcd.clear();
   bigFontBegin();
}


void loop() {
 

byte a = mavar/100;
byte b = (mavar/10)-(a*10);
byte c = mavar-(a*100)-(b*10);
 
lcd.setCursor(0, 1);

switch (a) {
case 0 :
  lcd.print("   ");  break;
case 1 :
  unHaut();  break;
case 2 :
  deuxHaut();  break;
case 3 :
  troisHaut();  break;
case 4 :
  quatreHaut();  break;
case 5 :
  cinqHaut();  break;
case 6 :
  sixHaut();  break;
case 7 :
  septHaut();  break;
case 8 :
  huitHaut();  break;
case 9 :
  neufHaut();  break;
}  
lcd.print(" ");

switch (b) {  
case 0 :
  zeroHaut();  break;
case 1 :
  unHaut();  break;
case 2 :
  deuxHaut();  break;
case 3 :
  troisHaut();  break;
case 4 :
  quatreHaut();  break;
case 5 :
  cinqHaut();  break;
case 6 :
  sixHaut();  break;
case 7 :
  septHaut();  break;
case 8 :
  huitHaut();  break;
case 9 :
  neufHaut();  break;
}  
lcd.print(" ");

switch (c) {  
case 0 :
  zeroHaut();  break;
case 1 :
  unHaut();  break;
case 2 :
  deuxHaut();  break;
case 3 :
  troisHaut();  break;
case 4 :
  quatreHaut();  break;
case 5 :
  cinqHaut();  break;
case 6 :
  sixHaut();  break;
case 7 :
  septHaut();  break;
case 8 :
  huitHaut();  break;
case 9 :
  neufHaut();  break;
}
//lcd.setCursor(0, 2);

switch (a) {  
case 0 :
  lcd.print("   ");  break;
case 1 :
  unBas();  break;
case 2 :
  deuxBas();  break;
case 3 :
  troisBas();  break;
case 4 :
  quatreBas();  break;
case 5 :
  cinqBas();  break;
case 6 :
  sixBas();  break;
case 7 :
  septBas();  break;
case 8 :
  huitBas();  break;
case 9 :
  neufBas();  break;
}  
lcd.print(" ");
switch (b) {  
case 0 :
  zeroBas();  break;
case 1 :
  unBas();  break;
case 2 :
  deuxBas();  break;
case 3 :
  troisBas();  break;
case 4 :
  quatreBas();  break;
case 5 :
  cinqBas();  break;
case 6 :
  sixBas();  break;
case 7 :
  septBas();  break;
case 8 :
  huitBas();  break;
case 9 :
  neufBas();  break;
}  
lcd.print(" ");
switch (c) {  
case 0 :
  zeroBas();  break;
case 1 :
  unBas();  break;
case 2 :
  deuxBas();  break;
case 3 :
  troisBas();  break;
case 4 :
  quatreBas();  break;
case 5 :
  cinqBas();  break;
case 6 :
  sixBas();  break;
case 7 :
  septBas();  break;
case 8 :
  huitBas();  break;
case 9 :
  neufBas();  break;
} 



}

Le debogage ne remonte pas d'erreur, mais impossible d'afficher ce fameux 125.

Si quelqu'un pouvait m'éclairer un peu sur ce qui ne va pas dans le sketch, ce serait vraiment cool

hello
voici ton code
il fonctionne, j'y ai ajouté quelques commentaires et libéré le positionnement du curseur pour que le lcd inscrive la partie basse des chiffres sur la bonne ligne.
attention, j'ai changé la déclaration des pinoches du lcd

ci joint un lcd avec 125

byte mavar= 125;


#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);//chez moi
//LiquidCrystal lcd(11,12,5,4,3,2); // Initialisation de la librairie Liquid Crystal

// gestion gros charactère
byte degre[8] = { B01000, B10100, B01000, B00111, B01000, B01000, B01000, B00111}; // °C
byte endJauge[8] = { B11111, B00001, B00001, B00001, B00001, B00001, B00001, B11111 }; // ]
byte startJauge[8] = { B11111, B10000, B10000, B10000, B10000, B10000, B10000, B11111 }; // [
byte fullJauge[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111 }; // carré plein
byte emptyJauge[8] = { B11111, B00000, B00000, B00000, B00000, B00000, B00000, B11111 }; // carré vide
byte haut[8] = { B11111, B11111, B00000, B00000, B00000, B00000, B00000, B00000 }; // trait en haut
byte bass[8] = { B00000, B00000, B00000, B00000, B00000, B00000, B11111, B11111 }; // trait en bas
byte lesDeux[8] = { B11111, B11111, B00000, B00000, B00000, B00000, B11111, B11111 }; // les deux

void bigFontBegin(){
lcd.createChar(0, degre);
lcd.createChar(1, startJauge);
lcd.createChar(2, endJauge);
lcd.createChar(3, fullJauge);
lcd.createChar(4, emptyJauge);
lcd.createChar(5, haut);
lcd.createChar(6, bass);
lcd.createChar(7, lesDeux);
}

 
void unHaut(){
  lcd.write(byte(5));//2 lignes en haut
  lcd.write(byte(3));//8 lignes carré plein
  lcd.print(" ");
}
void unBas(){
  lcd.write(byte(6));//2 lignes en bas
  lcd.write(byte(3));//8 lignes carré plein
  lcd.write(byte(6));//2 lignes en bas
}

void deuxHaut(){
  lcd.write(byte(7));//2 lignes en haut et 2 lignes en bas
  lcd.write(byte(7));//2 lignes en haut et 2 lignes en bas
  lcd.write(byte(3));//8 lignes carré plein
}
void deuxBas(){
  lcd.write(byte(3));//8 lignes carré plein
  lcd.write(byte(6));//2 lignes en bas
  lcd.write(byte(6));//2 lignes en bas
}
void troisHaut(){
  lcd.write(byte(5));
  lcd.write(byte(7));
  lcd.write(byte(3));
}
void troisBas(){
  lcd.write(byte(6));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void quatreHaut(){
  lcd.write(byte(3));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void quatreBas(){
  lcd.print(" ");
  lcd.print(" ");
  lcd.write(byte(3));
}
void cinqHaut(){
  lcd.write(byte(3));//8 lignes carré plein
  lcd.write(byte(7));//2 lignes en haut et 2 lignes en bas
  lcd.write(byte(7));//2 lignes en haut et 2 lignes en bas
}
void cinqBas(){
  lcd.write(byte(6));//2 lignes en bas
  lcd.write(byte(6));//2 lignes en bas
  lcd.write(byte(3));//8 lignes carré plein
}
void sixHaut(){
  lcd.write(byte(3));
  lcd.write(byte(7));
  lcd.write(byte(7));
}
void sixBas(){
  lcd.write(byte(3));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void septHaut(){
  lcd.write(byte(5));
  lcd.write(byte(5));
  lcd.write(byte(3));
}
void septBas(){
  lcd.print(" ");
  lcd.print(" ");
  lcd.write(byte(3));
}
void huitHaut(){
  lcd.write(byte(3));
  lcd.write(byte(7));
  lcd.write(byte(3));
}
void huitBas(){
  lcd.write(byte(3));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void neufHaut(){
  lcd.write(byte(3));
  lcd.write(byte(7));
  lcd.write(byte(3));
}
void neufBas(){
  lcd.write(byte(6));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void zeroHaut(){
  lcd.write(byte(3));
  lcd.write(byte(5));
  lcd.write(byte(3));
}
void zeroBas(){
  lcd.write(byte(3));
  lcd.write(byte(6));
  lcd.write(byte(3));
}
void setup()
{
 lcd.begin(20, 4);
 //lcd.clear();//inutile car fait par l'init lcd
 bigFontBegin();//cree les caracrteres en eprom lcd
}


void loop() {
 

byte a = mavar/100;                  //chiffre des centaines=1
byte b = (mavar/10)-(a*10);          //chiffre des dizaines=2
byte c = mavar-(a*100)-(b*10);       //chiffre des unités=5
 
lcd.setCursor(0, 1);                  //pour ecrire le haut des chiffres
switch (a) {                          //chiffre des centaines
case 0 :
  lcd.print("   ");  break;
case 1 :
  unHaut();  break;
case 2 :
  deuxHaut();  break;
case 3 :
  troisHaut();  break;
case 4 :
  quatreHaut();  break;
case 5 :
  cinqHaut();  break;
case 6 :
  sixHaut();  break;
case 7 :
  septHaut();  break;
case 8 :
  huitHaut();  break;
case 9 :
  neufHaut();  break;
} 
lcd.print(" ");                         //pour mettre un espace entre les centaines et les unites

switch (b) {                            //chiffre des dizaines
case 0 :
  zeroHaut();  break;
case 1 :
  unHaut();  break;
case 2 :
  deuxHaut();  break;
case 3 :
  troisHaut();  break;
case 4 :
  quatreHaut();  break;
case 5 :
  cinqHaut();  break;
case 6 :
  sixHaut();  break;
case 7 :
  septHaut();  break;
case 8 :
  huitHaut();  break;
case 9 :
  neufHaut();  break;
} 
lcd.print(" ");                   //pour mettre un espace entre les dizaines et les unites

switch (c) {                      //chiffre des unités
case 0 :
  zeroHaut();  break;
case 1 :
  unHaut();  break;
case 2 :
  deuxHaut();  break;
case 3 :
  troisHaut();  break;
case 4 :
  quatreHaut();  break;
case 5 :
  cinqHaut();  break;
case 6 :
  sixHaut();  break;
case 7 :
  septHaut();  break;
case 8 :
  huitHaut();  break;
case 9 :
  neufHaut();  break;
}

lcd.setCursor(0, 2);                        //pour ecrire le bas des chiffres
switch (a) { 
case 0 :
  lcd.print("   ");  break;
case 1 :
  unBas();  break;
case 2 :
  deuxBas();  break;
case 3 :
  troisBas();  break;
case 4 :
  quatreBas();  break;
case 5 :
  cinqBas();  break;
case 6 :
  sixBas();  break;
case 7 :
  septBas();  break;
case 8 :
  huitBas();  break;
case 9 :
  neufBas();  break;
} 
lcd.print(" ");                          //pour mettre un espace entre les centaines et les unites
switch (b) { 
case 0 :
  zeroBas();  break;
case 1 :
  unBas();  break;
case 2 :
  deuxBas();  break;
case 3 :
  troisBas();  break;
case 4 :
  quatreBas();  break;
case 5 :
  cinqBas();  break;
case 6 :
  sixBas();  break;
case 7 :
  septBas();  break;
case 8 :
  huitBas();  break;
case 9 :
  neufBas();  break;
} 
lcd.print(" ");                       //pour mettre un espace entre les dizaines et les unites
switch (c) { 
case 0 :
  zeroBas();  break;
case 1 :
  unBas();  break;
case 2 :
  deuxBas();  break;
case 3 :
  troisBas();  break;
case 4 :
  quatreBas();  break;
case 5 :
  cinqBas();  break;
case 6 :
  sixBas();  break;
case 7 :
  septBas();  break;
case 8 :
  huitBas();  break;
case 9 :
  neufBas();  break;
}



}

Super merci beaucoup pour le sketch :wink:

Mon problème viens donc d'ailleurs;
je l'ai teste sur deux nano, un avec un 1602 et l'autre avec un 2004, et rien qui ne ressemble à 125.
j'ai change le programme pour un hello,world tout simple et aucun problème, tout s'affiche correctement.

Mon câblage est du même type que celui ci appart une resistance a la place du potentiomètre;

http://images.google.fr/imgres?imgurl=https%3A%2F%2Fwww.arduino.cc%2Fen%2Fuploads%2FTutorial%2FLCD_Base_bb_Fritz.png&imgrefurl=https%3A%2F%2Fwww.arduino.cc%2Fen%2FTutorial%2FHelloWorld&h=1020&w=1845&tbnid=k_F8Dns6GxSO0M%3A&docid=xf8dvdwDlNuRmM&ei=l-xNV-nbFYqpsgG51Z_YBA&tbm=isch&client=safari&iact=rc&uact=3&dur=4406&page=1&start=0&ndsp=13&ved=0ahUKEwipg-K6jIXNAhWKlCwKHbnqB0sQMwgmKAAwAA&bih=762&biw=1189

Je cherche mais je ne vois pas d'ou ca peut venir ... :confused:

Bon après des redémarrages et des manips, tout fonctionne parfaitement.
Merci pour la réactivité :wink: