Logo qui ne s'affiche pas correctement sur un écran lcd 20X4

Bonjour a tous
Je viens vers vous suite a un souci de logo qui s'affiche pas correctement sur un écran LCD 20X4.
En effet j'ai le logo (voir photo en pj)


que je veux qu'il s'affiche sur mon écran LCD 20X4
j'ai bien créer le code
ci-dessous

#include "Wire.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27,16,2); // définit le type d'écran lcd 16 x 2
void setup() {
  lcd.init(); // initialisation de l'afficheur
  lcd.backlight();
}
  void loop() {
    lowerpart();
     loops();
    towerpart();
     loopss();
}
void lowerpart(){

byte Coeur [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000};  // Lettre N
byte Cloche [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000};  //Lettre N
byte Check [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000};   //Lettre N
byte Haut_parleur [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000}; // Lettre N
byte locket [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000};   //Lettre N
byte bocket [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000};  //Lettre N
byte focket [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000};  //Lettre N
lcd. createChar ( 0, Coeur ) ; // On copie le caractère dans la mémoire de l'écran
lcd. createChar ( 1, Cloche ) ;
lcd. createChar ( 2, Check ) ;
lcd. createChar ( 3, Haut_parleur ) ;
lcd. createChar ( 4, locket ) ;
lcd. createChar ( 5, bocket ) ;
lcd. createChar ( 6, focket ) ;

}

void loops() {
  // On met le curseur à la colonne 0 ligne 1
  // Imprimer tous les caractères personnalisés:
  lcd. setCursor ( 0, 0 ) ; // On place le curseur ou veut le caractère
  lcd.write(byte(0)); // On affiche le caractère.
  lcd. setCursor ( 2, 0 ) ;
  lcd.write(byte(1));
  lcd. setCursor ( 4, 0 ) ;
  lcd.write(byte(2));
  lcd. setCursor ( 6, 0 ) ;
  lcd.write(byte(3));
  lcd. setCursor ( 8, 0 ) ;
  lcd.write(byte(4));
lcd. setCursor ( 10, 0 ) ;
 lcd.write(byte(5));
 lcd. setCursor ( 12, 0 ) ;
  lcd.write(byte(6));
}


int x = 0;
// the 8 arrays that form each segment of the custom numbers


byte LT[8] = {B00111,B01111,B11111, B11111,B11111,B11111,B11111,B11111};
byte UB[8] ={B11111,B11111,B11111,B00000,B00000,B00000,B00000,B00000};
byte RT[8] ={B11100,B11110,B11111,B11111,B11111,B11111,B11111,B11111};
byte LL[8] ={B11111,B11111,B11111,B11111,B11111,B11111,B01111,B00111};
byte LB[8] ={B00000,B00000,B00000,B00000,B00000,B11111,B11111,B11111};
byte LR[8] ={B11111,B11111,B11111,B11111,B11111,B11111,B11110,B11100};
byte UMB[8] ={B11111,B11111,B11111,B00000,B00000,B00000,B11111,B11111};
byte LMB[8] ={B11111,B00000,B00000,B00000, B00000,B11111,B11111, B11111};

void towerpart()
{ 
  // assignes each segment a write number
  lcd.createChar(0,LT);
  lcd.createChar(1,UB);
  lcd.createChar(2,RT);
  lcd.createChar(3,LL);
  lcd.createChar(4,LB);
  lcd.createChar(5,LR);
  lcd.createChar(6,UMB);
  lcd.createChar(7,LMB);


}
void customN(){
  lcd.setCursor(x,0);
  lcd.write(0);
  lcd.write(3);
  lcd.print(" ");
  lcd.write(2);
  lcd.setCursor(x,1);
  lcd.write(3);
  lcd.print(" ");
  lcd.write(2);
  lcd.write(5);
}

void loopss()
{
  customN();
  x = x + 5;
  //custom0O();
  delay(4000);  
  //lcd.clear();  
  x = 0;
}

mais malheureusement il ne s'affiche pas correctement comme sur le logo
Pouvez vous s'il vous plait m'aider a trouver solution a mon souci

Merci d'avance a tous

Bonsoir
Vous etes invité a lire Les bonnes pratiques du Forum Francophone

Et a mettre le code dans la balise code
Merci

Comme on ne sait pas ce qui s affiche vraiment ni comment c est branché ni les references ca va pas etre facile

Hello
Tu ouvres un fil pour un afficheur 20x4
Et dans les premières lignes de ton code, tu crées un afficheur en 16x2

Hello
Vous avez raison
excusez moi je n'ai pas encore ajoute les balises , que je suis entrain d'ajouter
l'écran 20X4 est connecte au module interface serial I2C qui est câble sur un Arduino nano
GND ===> GND
VCC====> +5V
SDA ==== A4
SCL==== A5
ci dessous le code:

#include "Wire.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27,20,4); // définit le type d'écran lcd 20 x 4
void setup() {
lcd.init(); // initialisation de l'afficheur
lcd.backlight(); // 
}
void loop() {
lowerpart();
loops();
towerpart();
loopss();
}
void lowerpart(){
byte Coeur [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000}; // Lettre N
byte Cloche [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000}; //Lettre N
byte Check [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000}; //Lettre N
byte Haut_parleur [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000}; // Lettre N
byte locket [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000}; //Lettre N
byte bocket [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000}; //Lettre N
byte focket [] = {B10001,B11001,B10101,B10011, B10001,B10001,B00000,B00000}; //Lettre N
lcd. createChar ( 0, Coeur ) ; // On copie le caractère dans la mémoire de l'écran
lcd. createChar ( 1, Cloche ) ;
lcd. createChar ( 2, Check ) ;
lcd. createChar ( 3, Haut_parleur ) ;
lcd. createChar ( 4, locket ) ;
lcd. createChar ( 5, bocket ) ;
lcd. createChar ( 6, focket ) ;

}

void loops() {
// On met le curseur à la colonne 0 ligne 1
// Imprimer tous les caractères personnalisés:
lcd. setCursor ( 0, 0 ) ; // On place le curseur ou veut le caractère
lcd.write(byte(0)); // On affiche le caractère.
lcd. setCursor ( 2, 0 ) ;
lcd.write(byte(1));
lcd. setCursor ( 4, 0 ) ;
lcd.write(byte(2));
lcd. setCursor ( 6, 0 ) ;
lcd.write(byte(3));
lcd. setCursor ( 8, 0 ) ;
lcd.write(byte(4));
lcd. setCursor ( 10, 0 ) ;
lcd.write(byte(5));
lcd. setCursor ( 12, 0 ) ;
lcd.write(byte(6));
}

int x = 0;
// the 8 arrays that form each segment of the custom numbers

byte LT[8] = {B00111,B01111,B11111, B11111,B11111,B11111,B11111,B11111};
byte UB[8] ={B11111,B11111,B11111,B00000,B00000,B00000,B00000,B00000};
byte RT[8] ={B11100,B11110,B11111,B11111,B11111,B11111,B11111,B11111};
byte LL[8] ={B11111,B11111,B11111,B11111,B11111,B11111,B01111,B00111};
byte LB[8] ={B00000,B00000,B00000,B00000,B00000,B11111,B11111,B11111};
byte LR[8] ={B11111,B11111,B11111,B11111,B11111,B11111,B11110,B11100};
byte UMB[8] ={B11111,B11111,B11111,B00000,B00000,B00000,B11111,B11111};
byte LMB[8] ={B11111,B00000,B00000,B00000, B00000,B11111,B11111, B11111};

void towerpart()
{
// assignes each segment a write number
lcd.createChar(0,LT);
lcd.createChar(1,UB);
lcd.createChar(2,RT);
lcd.createChar(3,LL);
lcd.createChar(4,LB);
lcd.createChar(5,LR);
lcd.createChar(6,UMB);
lcd.createChar(7,LMB);

}
void customN(){
lcd.setCursor(x,0);
lcd.write(0);
lcd.write(3);
lcd.print(" ");
lcd.write(2);
lcd.setCursor(x,1);
lcd.write(3);
lcd.print(" ");
lcd.write(2);
lcd.write(5);
}

void loopss()
{
customN();
x = x + 5;

delay(4000);

x = 0;
}

Merci a vous

Il n'était pas nécessaire de faire un nouveau post pour ça, il suffisait

  • d'éditer le premier message (clic sur l'icône crayon sous ton premier message)
  • de sélectionner le code
  • de cliquer sur l'icône <code/>

@ebenglenf
hello
pas de reponses tant que votre code ne sera pas placé entre balises.

projet scolaire ?
vu les erreurs, ce n'est pas vous qui avez fait ce code. c'est un code chat gpt? ou trouvé sur le net ?

C'est fait
Merci pour la remarque

C'est quoi ces noms de variables ?

et vous avez aussi

comment voulez vous afficher cela


sur un LCD 20 x 4 ?

il vaudrait mieux dessiner cela sur la matrice pixélisée et vous débrouiller pour avoir au plus 8 caractères personalises EN TOUT. (si vous changez dynamiquement un caractère personnel, ça change instantanément le dessin à l'écran)

Les 8 premiers : noms exotiques et ils définissent tous la lettre "N"

oui autant faire un print("N")...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.