problème de création de caractère sur LCD

bonjour j'essaye de crée et affiche des caractères quand j'affiche 1 sa marche quand je met plus de un sa me met des signe pas normal


première caractère (flèche bas (tous fonctionne))

#include <ShiftLCD.h>
ShiftLCD lcd(5, 6, 7);
   byte DOWN[7]{B00000, B00100, B00100, B00100, B10101, B01110, B00100};
   
void setup() {
  lcd.begin(16, 2);
  lcd.createChar(0,DOWN);
  }
 
void loop() {
  lcd.setCursor(0, 1);
  lcd.write(DOWN);
    
}

rajout fleche haut(la sa marche pas)

#include <ShiftLCD.h>
ShiftLCD lcd(5, 6, 7);
   byte DOWN[7]{B00000, B00100, B00100, B00100, B10101, B01110, B00100};
   byte UP[7]{B00000, B00100, B01110, B10101, B00100 ,B00100 ,B00000};
   

void setup() {
  
  lcd.createChar(0,DOWN);
  lcd.createChar(0,UP);
  
  }
 
void loop() {
  lcd.setCursor(0, 1);
  lcd.print((char)DOWN);
  lcd.setCursor(15, 1);
  lcd.write(UP);
 
  
}

et un 3eme (valider)

#include <ShiftLCD.h>
ShiftLCD lcd(5, 6, 7);
   byte DOWN[7]{B00000, B00100, B00100, B00100, B10101, B01110, B00100};
   byte UP[7]{B00000, B00100, B01110, B10101, B00100 ,B00100 ,B00000};
   byte VALIDE[6]{B00000, B00000, B00001, B00010, B10100, B01000};

void setup() {
  lcd.createChar(0,DOWN);
  lcd.createChar(0,UP);
  //lcd.createChar(0,VALIDE);
  }
 
void loop() {
  lcd.setCursor(0, 1);
  lcd.print((char)DOWN);
  lcd.setCursor(8, 1);
  lcd.write(VALIDE);
  lcd.setCursor(15, 1);
  lcd.write(UP);
  
  
}

librairie uriliser
mon afficheur lcd est brancher par un74HC595
si quelqu'un peux me dire ce qu'il cloche merci d'avance

probleme résolue j'ai tous mie dans setup et a la place de taper le nom jai mie le numero

#include <ShiftLCD.h>
ShiftLCD lcd(5, 6, 7);
   byte DOWN[7]{B00000, B00100, B00100, B00100, B10101, B01110, B00100};
   byte UP[7]{B00000, B00100, B01110, B10101, B00100 ,B00100 ,B00000};
   byte VALIDE[6]{B00000, B00000, B00001, B00010, B10100, B01000};

void setup() {
  lcd.begin(16, 2);
  //lcd.print("Hello, World");
  lcd.createChar(0,DOWN);
  lcd.createChar(1,UP);
  lcd.createChar(2,VALIDE);
  
  lcd.setCursor(0, 1);
  lcd.write(0);
  lcd.setCursor(8, 1);
  lcd.write(2);
  lcd.setCursor(15, 1);
  lcd.write(1);
  
  }
 
void loop() {
  
  
  
}

mes autre question lcd.createChar(2,VALIDE);
les deux truc sousligner serve a quoi exactement

Faut lire la doc
lcd.createChar(num, data)
Le premier argument c'est le numéro du caractère. On peut en créer 8 num = 0 à 7
Le second argument c'est le pointeur sur le tableau qui décrit le bitmap du caractère

Il manque un signe égal dans tes définitions

byte DOWN[7]{B00000, B00100, B00100, B00100, B10101, B01110, B00100};

devrait être

byte DOWN[7] = {B00000, B00100, B00100, B00100, B10101, B01110, B00100};

Je rebondis sur ce post : il n'y a pas une astuce pour créer plus de caractères spéciaux ?

Regarde de ce côté là :

BrUnO14200:
Je rebondis sur ce post : il n'y a pas une astuce pour créer plus de caractères spéciaux ?

Bonjour,

Non le nombre de caractères spéciaux est limité à 8. Mais tu peux les changer dynamiquement, il faut simplement qu'il n'y en ait pas plus de 8 affichés en même temps.

Merci Kamill pour l'astuce, ça doit être un poil lourd à gérer mais je retiens l'idée.

Sinon il existe des "graphic LCD" avec tous les pixels adressables - par exemple regardez les ST7920 128X64