Probleme ecran 1602

Bonjour
je viens vous demander votre aide.
En effet j’ai reproduit un projet qu’une personne a mis en ligne. J’ai donc suivi son câblage et j’ai copié son code.
Or j’ai un souci avec l’affichage sur mon écran. Celui ci ne m’affiche que la moitié des choses (sur la moitié droite de l’écran) et ne m’affiche aucun caractère mais des carrés ou des traits.

Voilà ce qui est marqué dans le code:

#include "Wire.h" //bibliothèque wire
#include "LiquidCrystal_I2C.h" //bibliothèque écran lcd I2C
#include "Keypad.h" //bibliothèque keypad

LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 20 chars and 4 line display

Je précise ce qui est marqué car lui a utilisé un 2004 et moi un 1602.
JE souhaiterai donc que cela fonctionne mais je ne trouve pas.
Voilà donc ce que j’ai mis:

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display

J’ai juste modifié cela dans tout le code en sachant que sur un 2004 le code fonctionne parfaitement j’ai testé mais je souhaiterai le faire fonctionner sur un 1602.
Sauriez vous me dire ce qui cloche?
Merci.

as tu essayé les exemples de la lib LiquidCrystal_I2C

Et le code est ??

1) vérifier le cablage 2) vérifier le réglage du contraste de l'écran (potar) 3) vérifier l'adresse de l'écran par le programme scanner I2C 4) vérifier que la bibliothèque LCDI2C est compatible avec le modèle utilisé (grâce aux exemples fournis avec la bib)

Bonjour à tous.
Je vais essayer d’être plus détaillé.
Voici le code que j’avais avec mon écran 1602est qui fonctionnait parfaitement.

// Projet_airsoft3.ino

/////////////////////////////////////////////////////
//                                                 //
//          de Biddal pour la team seven           //
//                                                 //
/////////////////////////////////////////////////////

/////////////////////////////////////////////////////

// Inclusion de la librairie pour l'afficheur LCD

#include <LiquidCrystal.h>

// Inclusion de la librairie pour le clavier matriciel

#include <Keypad.h>

#include "Wire.h" //bibliothèque wire

// Déclaration des constantes utiles pour le clavier

const byte LIGNES = 4; // 4 lignes
const byte COLONNES = 4; // 4 colonnes

// Déclaration des constantes pour les broches

const int C4=2; //declaration constante de broche 
const int C3=3; //declaration constante de broche 
const int C2=4; //declaration constante de broche 
const int C1=5; //declaration constante de broche 
const int RS=8; //declaration constante de broche 
const int E=9; //declaration constante de broche 
const int D4=10; //declaration constante de broche 
const int D5=11; //declaration constante de broche 
const int D6=12; //declaration constante de broche 
const int D7=13; //declaration constante de broche 
const int L4=16; //declaration constante de broche 
const int L3=17; //declaration constante de broche 
const int L2=18; //declaration constante de broche 
const int L1=19; //declaration constante de broche 

const int ledverte = 1;
const int ledrouge = 13;

// Déclaration des variables globales

char touches[LIGNES][COLONNES] = {  // variables globales des touches du clavier 4x4
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

// Déclaration variables globales de lignes et de colonnes du clavier 4x4 et de la variable de mémorisation de la touche appuyée

byte BrochesLignes[LIGNES] = {L1, L2, L3, L4}; // connexions utilisées pour les broches de lignes du clavier
byte BrochesColonnes[COLONNES] = {C1, C2, C3, C4}; // connexions utilisées pour les broches de colonnes du clavier

// Déclaration d'un objet LCD alphanumérique

LiquidCrystal lcd(7,8,9,10,11,12);

//définition des différentes valeurs utilisées

char touche; // variable de stockage de la valeur de la touche appuyée
char key;
char mdpentre[4]; // nombre de chiffre entré pour le code
char password[4]; // nombre de chiffre dans le code
char heureset[3];
char minuteset[3];
char secondeset[3];
char buzzer1 = 6;

int jeu = 0; //numéro du jeu
int interval = 1000; // delais pour 1 seconde en ms
int mdplong = 0; // nombre de caractère écrit pour le mot de passe
int mdperreur = 0; // nombre d'erreur dans la saisi du code
int heure = 0; // compteur secondes 
int minute = 0; // compteur minutes 
int seconde = 0; // compteur heures

long secMillis = 0;
long secMillis_bip = 0;

// Déclaration d'un objet clavier matriciel

// Création d'un objet keypad = initialisation clavier
Keypad clavier = Keypad( makeKeymap(touches), BrochesColonnes, BrochesLignes, COLONNES, LIGNES );
// Les broches de lignes sont automatiquement configurées en ENTREE avec pullup interne activé
// Les broches de colonnes sont automatiquement configurées en SORTIE

void setup() 
{ 
  lcd.begin(16, 2); // Initialise le LCD avec 16 colonnes x 2 lignes
  delay(10);
  lcd.print("LCD OK"); 
  delay(2000);
  lcd.clear();
  lcd.print("Appuyez sur A"); 
  while(1)//boucle d'attente pour commencer à jouer
  {
     key = clavier.getKey();//lecture de la key appuyée
     if(key == 'A')
     {
        tone(buzzer1,300);
         delay(150);
         tone(buzzer1,400);
         delay(150);
         tone(buzzer1,500);
         delay(150);
         tone(buzzer1,600);
         delay(150);
         tone(buzzer1,700,150);
        menu();
      }//si la key A est appuyée on va dans la fonction menu
   } //fin boucle d'attente
}

void loop()
{
} //fin void loop

void menu()//fonction menu
{
   jeu = 0;
   lcd.clear();
   lcd.setCursor(0,0);
   lcd.print("A= Desamorcage"); //désamorcer une bombe dans le temps imparti
   lcd.setCursor(0,1);
   lcd.print("B= Search&Destroy"); // trouver une bombe et la défendre pour la faire exploser
   lcd.setCursor(0,2);
   while(1) //boucle d'attente pour choisir le mode de jeu
   {
      key = clavier.getKey();//lecture de la key appuyée
      if(key == 'A'){bombe();} //si appui sur la key A alors menu bombe
      //if(key == 'B'){search();} //si appui sur la key B alors menu search
   } //fin boucle d'attente
} //fin void menu

Cela fonctionne parfaitement mais pour cela voilà le schéma du câblage.

Désolé pour le schéma c’est le premier que je fais soyez indulgent :stuck_out_tongue:
Comme vous pouvez le voir l’écran à lui seul me prend 6 ports sur l’arduino or la personne a qui j’ai pris le programme lui a câblé son 2004 avec juste 4 câbles dont juste 2 vont sur les ports de l’arduino autre que le GND et 5V.
Voici l’image:

J’aimerai donc câbler mon écran comme lui or lorsque je le fais et que je met les modifications que j’ai mis plus haut cela ne fonctionne pas j’ai des carrés et ensuite des traits que sur la moitié droite de l’écrfan.
Potar je l’ai mis en place avant lorsque je l’avais câblé autrement et donc il est bien réglé.
Après pour le scanner d’adresse y a t il un logiciel pour cela ou faut il lancer le code que j’ai trouvé sur internet avec l’arduino etc de branché?
Merci à vous.

il pilote son écran en I2C hors dans votre code qui fonctionne vous faites
LiquidCrystal lcd(7,8,9,10,11,12);
ce qui me laisse à penser que vous n’avez pas un écran avec adaptateur I2C

c’est un truc qui se présente comme cela
et c’est soudé au dos de l’afficheur sur toutes les pins

et ça vous donne juste les 4 pins que vous voyez (interface I2C standard)

(si vous cherchez sur eBay “I2C IIC Serial Interface Board Module LCD1602” vous verrez que ça se vend 1 euro pièce et si vous en commandez 2 vous pouvez sans doute trouver cela pour 1,3€)

J-M-L:
il pilote son écran en I2C hors dans votre code qui fonctionne vous faites
LiquidCrystal lcd(7,8,9,10,11,12);
ce qui me laisse à penser que vous n’avez pas un écran avec adaptateur I2C

c’est un truc qui se présente comme cela
et c’est soudé au dos de l’afficheur sur toutes les pins

et ça vous donne juste les 4 pins que vous voyez (interface I2C standard)

(si vous cherchez sur eBay “I2C IIC Serial Interface Board Module LCD1602” vous verrez que ça se vend 1 euro pièce et si vous en commandez 2 vous pouvez sans doute trouver cela pour 1,3€)

Oui effectivement après moult recherches je viens justement de trouver réponse à ma question. Effectivement il me manque cet adaptateur I2C.
Merci beaucoup