ST7565 affichage integer

Bonjour a tous,

Je suis bloqué sur un problème d'affichage d'integer sur un ecran graphique tout fraichement arrivé le ST7565.

Mon problème étant que je souhaite passer d'un LCD I2C sous LiquidCrystal_I2C.h a un GLCD sous ST7565.h, je change donc toutes mes variables d'affichage tel que suivant :

  lcd.setCursor(3,0);
  lcd.print("Selection mode");
  lcd.setCursor(6,1);
  lcd.print("de jeu :");
  lcd.setCursor(4,2);
  lcd.print("1- Code");
  lcd.setCursor(4,3);
  lcd.print("2- Piratage");
  glcd.drawstring(14, 1, "Selection du mode");
  glcd.drawstring(43, 2, "de jeu :");
  glcd.drawstring(33, 4, "1- Code");
  glcd.drawstring(33, 5, "2- Piratage");
  glcd.display();

Jusque la tout va bien, même si j'aurais penser cela plus similaire au LCD.

Mais mon problème viens quand il me faut afficher une valeur numérique stockée dans un integer, car la librairie ST7565 me force a utiliser la fonction de la maniere suivante : drawstring(uint8_t x, uint8_t line, char *c)

A ce moment la comment puis-je afficher une valeur comme par exemple i = 10 car biensur glcd.drawstring(33, 5, i) ne fonctionne pas car i n'est pas un char mais un int ?!

Mon second problème étant d'afficher sur l'ecran la valeur d'une touche de mon keypad mon code étant :

while (Hcount < 2)
  {
    lcd.setCursor(Hcount + 6, 2);
    lcd.cursor();
    char key = keypad.getKey();
    key == NO_KEY;
    if (key != NO_KEY)
    {
      if ((key != '*')&&(key != '#'))
      { 
      lcd.print(key);
      tone1.play(NOTE_C6, 200);
      Hcountset[Hcount] = key;
      Hcount++;
      }
    }
  }

Car selon moi et si je relis cette partie de code "char key = keypad.getKey();", key est donc un char et devrait etre pris en compte si je remplace "lcd.print(key);" par "glcd.drawstring(33, 5, key)" ?!

Merci de vos éclaircissement !

Bonsoir,
Rien ne t'empêche de convertir ton int en char.
int to char

merci pour ta réponse je vais étudier ton lien meme si je suis deja tomber dessus et j'ai un peu de mal a me mettre dedans ><

je ne comprend quand meme pas l'erreur que j'ai sur l'affichage de key sur ce code :

while (Hcount < 2)
 {
   lcd.setCursor(Hcount + 6, 2);
   lcd.cursor();
   char key = keypad.getKey();
   key == NO_KEY;
   if (key != NO_KEY)
   {
     if ((key != '*')&&(key != '#'))
     { 
     glcd.drawstring(40, 4, key);
     glcd.display();
     tone1.play(NOTE_C6, 200);
     Hcountset[Hcount] = key;
     Hcount++;
     }
   }
 }
error: invalid conversion from 'char' to 'char*'

Si c'est pour glcd.drawstring, il te faut une chaîne de caractères, et pas un caractère tout seul.

Par exemple via un tampon:

char buf[2]; buf[0] = key; buf[1] = 0; glcd.drawstring(40, 4, buf);

merci pour ta réponse un peu plus clair que ce que j'ai pu voir sur le net !

mais du coup si key = 8
alors j'aurais comme affichage : 80 ?!

0 = le nombre zéro, signe de fin de chaîne, pas le chiffre zéro, dont la valeur décimale ASCII est 48.

Merci ! je comprend mieux !

Bonne nouvelle, mes tests indépendant de mon code entier fonctionne grâce a ton code, me reste plus qu'a l’intégrer !

Autre question : pour transformer la valeur de mon keypad en ascii je doit utiliser itoa(); c'est ca ?

Autre question : pour transformer la valeur de mon keypad en ascii je doit utiliser itoa(); c'est ca ?

up ?

du coup meme en ayant compris la réponse de XavierMiller je n'arrive pas a modifier cette partie de mon code :

while (Hcount < 2)
  {
    lcd.setCursor(Hcount + 6, 2);
    lcd.cursor();
    char key = keypad.getKey();
    key == NO_KEY;
    if (key != NO_KEY)
    {
      if ((key != '*')&&(key != '#'))
      { 
      lcd.print(key);
      tone1.play(NOTE_C6, 200);
      Hcountset[Hcount] = key;
      Hcount++;
      }
    }
  }