Bonjour,

je viens de programmer un code de type "password".

le programme choisi de façon aléatoire un numéro d'enregistrement, le joueur doit saisir un code.Red
Pas de souci pour la saisie, sauf qu'au niveau de la comparaison, problème. J'ai bien le code_tapé mais celui-ci est sui de r et un carré.
Je suppose que cela est dû au choix de la variable, mais je ne sais pas comment le résoudre char* password vs char code_tape

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
 
//initialisation du clavier
#include <Keypad.h> //include keypad library - first you must install library (library link in the video description)
 
//initialisation du LCD I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
 
 
#define redLED 10 //define the LED pins
#define blueLED 11
 
char* password ;
int i;
 
const byte rows = 4; //number of the keypad's rows and columns
const byte cols = 4;
 
char keyMap [rows] [cols] = { //define the cymbols on the buttons of the keypad
 
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
 
byte rowPins [rows] = {13, 12, 11, 10}; //pins of the keypad
byte colPins [cols] = {9, 8, 7, 6};
 
Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, rows, cols);
 
// On définit le type crypto
struct t_crypto {
  const char* ID;
  const char* Red;
  const char* Blue;
};
 
t_crypto Code[] = {
  {"A1C2", "8AA4", "7C9A" },
  {"C312", "651A", "8A52"},
  {"AA98", "74A1", "8C8A"},
  {"7A54", "A35C", "55C2"},
  {"3A3C", "3A3C", "01A5"},
  {"3C5A", "AAAA", "80C4"},
  {"648C", "CC1C", "92C1"},
  {"9761", "C7A4", "3333"}
};
 
void choisirCarteAleatoire()
{
  long carteCrypto = random(0, 8);
 
  Serial.println(carteCrypto);
  Serial.println(F("Crypto carte: "));
  Serial.println(Code[carteCrypto].ID);
  Serial.println(Code[carteCrypto].Red);
  Serial.println(Code[carteCrypto].Blue);
  password = Code[carteCrypto].Red;
Serial.print(password);
}
void   setup () {
  Serial.begin(115200);
  // Pour activer l'état HOLD
  unsigned int time_hold = 4;
 
  //Ecran
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  pinMode(redLED, OUTPUT);  //set the LED as an output
  pinMode(blueLED, OUTPUT);
  randomSeed(analogRead(A0)); // génération d'un peu d'aléatoire
  choisirCarteAleatoire();
}
 
void loop () {
 
  int taille_code = 4;
  char code_secret[taille_code] = {password}; //tableau contenant code
  char code_tape[taille_code] = {0};          //tableau contenant la saie
 
  for ( i = 0 ;  i < taille_code;  ) {
    char whichKey = myKeypad.getKey(); //define which key is pressed with getKey
    if (whichKey) {
      code_tape[i] = whichKey;
      Serial.print("*");
      Serial.println(code_tape[i]);
      i++;
    }
    if (i == 4) {
      Serial.println(code_tape);
      Serial.println(password);
      if (code_tape == password) {
        Serial.print("accès accordé");
      } else {
        Serial.print("code erreur");
      }
    }
  }
 
}