aide pour un digicode

Cela fais 1 mois que j’ai ce projet et je me retrouve bloqué avec mon arduino.
En fais je cherche à créer un digicode mais je n’arrive pas à lui faire afficher sur mon lcd. C’est un lcd IIC LCM1602 216. Je me suis documenté j’ai trouvé les programes et tout mais il ne veut pas m’afficher ce que je veut !! Mon arduino est un arduino UNO et je me sert d’une plaque de bouton matriciel 44.

Voici le programme :

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int w = 0;
int x = 0;
int y = 0;
int z = 0;
const int entree1 = 2;
const int entree2 = 3;
const int entree3 = 4;
const int entree4 = 5;
const int sortie1 = 6;
const int sortie2 = 7;
const int sortie3 = 8;
void setup() {
lcd.backlight();
lcd.begin(16,2);
pinMode(entree1, INPUT);
pinMode(entree2, INPUT);
pinMode(entree3, INPUT);
pinMode(entree4, INPUT);
pinMode(sortie1, OUTPUT);
pinMode(sortie2, OUTPUT);
pinMode(sortie3, OUTPUT);
}
void loop() {
  debutcode:
if (entree1 and sortie1 == HIGH){
  w = 1;
  goto digit2;
}
if (entree1 and sortie2 == HIGH){
  w = 2;
  goto digit2;
}
if (entree1 and sortie3 == HIGH){
  w = 3;
  goto digit2;
}
if (entree2 and sortie1 == HIGH){
  w = 4;
  goto digit2;
}
if (entree2 and sortie2 == HIGH){
  w = 5;
  goto digit2;
}
if (entree2 and sortie3 == HIGH){
  w = 6;
  goto digit2;
}
if (entree3 and sortie1 == HIGH){
  w = 7;
  goto digit2;
}
if (entree3 and sortie2 == HIGH){
  w = 8;
  goto digit2;
}
if (entree3 and sortie3 == HIGH){
  w = 9;
  goto digit2;
}
if (entree4 and sortie2 == HIGH){
  w = 0;
  goto digit2;
}
goto debutcode;
digit2:
lcd.setCursor(0,0);
lcd.print(w);
delay(5000);
debutboucle2:
if (entree1 and sortie1 == HIGH){
  x = 1;
  goto digit3;
}
if (entree1 and sortie2 == HIGH){
  x = 2;
  goto digit3;
}
if (entree1 and sortie3 == HIGH){
  x = 3;
  goto digit3;
}
if (entree2 and sortie1 == HIGH){
  x = 4;
  goto digit3;
}
if (entree2 and sortie2 == HIGH){
  x = 5;
  goto digit3;
}
if (entree2 and sortie3 == HIGH){
  x = 6;
  goto digit3;
}
if (entree3 and sortie1 == HIGH){
  x = 7;
  goto digit3;
}
if (entree3 and sortie2 == HIGH){
  x = 8;
  goto digit3;
}
if (entree3 and sortie3 == HIGH){
  x = 9;
  goto digit3;
}
if (entree4 and sortie2 == HIGH){
  x = 0;
  goto digit3;
}
goto debutboucle2;
digit3:
lcd.setCursor(1,0);
lcd.print(x);
delay (5000);
debutboucle3:
if (entree1 and sortie1 == HIGH){
  y = 1;
  goto digit4;
}
if (entree1 and sortie2 == HIGH){
  y = 1;
  goto digit4;
}
if (entree1 and sortie3 == HIGH){
  y = 1;
  goto digit4;
}
if (entree2 and sortie1 == HIGH){
  y = 1;
  goto digit4;
}
if (entree2 and sortie2 == HIGH){
  y = 1;
  goto digit4;
}
if (entree2 and sortie3 == HIGH){
  y = 1;
  goto digit4;
}
if (entree3 and sortie1 == HIGH){
  y = 1;
  goto digit4;
}
if (entree3 and sortie2 == HIGH){
  y = 1;
  goto digit4;
}
if (entree3 and sortie3 == HIGH){
  y = 1;
  goto digit4;
}
if (entree4 and sortie2 == HIGH){
  y = 1;
  goto digit4;
}
goto debutboucle3;
digit4:
lcd.setCursor(2,0);
lcd.print(y);
delay (5000);
debutboucle4:
if (entree1 and sortie1 == HIGH){
  z = 1;
  goto fincode;
}
if (entree1 and sortie2 == HIGH){
  z = 1;
  goto fincode;
}
if (entree1 and sortie3 == HIGH){
  z = 1;
  goto fincode;
}
if (entree2 and sortie1 == HIGH){
  z = 1;
  goto fincode;
}
if (entree2 and sortie2 == HIGH){
 z = 1;
  goto fincode;
}
if (entree2 and sortie3 == HIGH){
  z = 1;
  goto fincode;
}
if (entree3 and sortie1 == HIGH){
  z = 1;
  goto fincode;
}
if (entree3 and sortie2 == HIGH){
  z = 1;
  goto fincode;
}
if (entree3 and sortie3 == HIGH){
  z = 1;
  goto fincode;
}
if (entree4 and sortie2 == HIGH){
  z = 1;
  goto fincode;
}
if (w == 0 or x == 0 or y == 0 or z == 0){
goto debutboucle4;
}
fincode:
lcd.setCursor(3,0);
lcd.print(z);
if (w == 0){
  goto test2;
}
else {
  lcd.setCursor(1,0);
  lcd.print("code faux");
}
test2:
if (x == 6){
  goto test3;
}
else {
  lcd.setCursor(1,0);
  lcd.print("code faux");
}
test3:
if (y == 0){
  goto test4;
}
else {
  lcd.setCursor(1,0);
  lcd.print("code faux");
}
test4:
if (z == 7){
  goto affichage;
}
else {
  lcd.setCursor(1,0);
  lcd.print("code faux");
}
affichage:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("tu n'a rien à");
lcd.setCursor(0,1);
lcd.print("faire ici !!");
}

Où mon programe pose-t-il problème ?
Merci d’avance pour les soluces.

Bonjour,

Principe du multiplexage du claver -> on met une ligne à 1 (ou à 0 suivant cablage), on regarde si une des colonne est à 1 et on en déduit la touche enfoncée, puis on passe à la ligne suivante etc.

Dans ton programme tu ne commande jamais les sorties, comment veux tu décoder le clavier.

Sur le net ce ne sont pas les exemples qui manquent, il y a même des librairies toutes faites.

ha ok !