Bonjour à tous !
Je suis actuellement en train de réaliser mon projet de fin de terminale en sciences de l'ingénieur, et je m'occupe de la partie programmation... Sur Arduino.

Je tiens à préciser que je suis très mauvais en Arduino, et que malgré les cours Arduino je ne pige pas grand chose à ce qui se passe à l'écran (alors que d'autres langages de programmation comme le C# ou le Python ne me posent aucun problème)

Je dois, pour ce projet, permettre à une carte arduino de comparer un code entré avec un code placé en mémoire, et le moins qu'on puisse dire, c'est que ça marche pas des masses !

Voici mon horreur mon code:

Code c++ : 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
 
#include <Keypad.h>
 
const byte LINS = 4; // 4 lignes
const byte COLS = 3; // Trois colonnes
// On définit la matrice représentant le clavier
char touches[LINS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'#','0','*'}
};
// Connecter le clavier LIN0, LIN1, LIN2 et LIN3 aux broches correspondantes sur la carte.
byte linPins[LINS] = { 4, 3, 2, 1 };
// Connecter le clavier COL0, COL1 et COL2 aux broches correspondantes sur la carte.
byte colPins[COLS] = { 7, 6, 5 }; 
 
// Create the Keypad
Keypad clavier = Keypad( makeKeymap(touches), linPins, colPins, LINS, COLS );
 
int code[5]={0,8,8,8,8};
int codeentre[5];
char codeentreserial[5]; // Version du code entré utilisée pour afficher le code sur entré sur le moniteur série
int compteur = 1;
 
#define ledpin 13
 
void setup()
{
  Serial.begin(9600);
}
 
void loop()
{
  char key = clavier.getKey();
  if(key)  // Check for a valid key.
  {
      Serial.println(key);
      if (compteur<5)
      {
        compteur=compteur;
        codeentre[compteur]=key;
        codeentreserial[compteur]=key;
        compteur=compteur+1;
        Serial.println(compteur);;
      } // FIN ENTREE
      delay(250);
      if (compteur==5)
      {
        Serial.println("");
        Serial.println("Code entre:");
        Serial.println(codeentreserial[1]);
        Serial.println(codeentreserial[2]);
        Serial.println(codeentreserial[3]);
        Serial.println(codeentreserial[4]);
        Serial.println("");
        Serial.println("Code en memoire:");
        Serial.println(code[1]);
        Serial.println(code[2]);
        Serial.println(code[3]);
        Serial.println(code[4]);
        Serial.println("");
        Serial.println(compteur);
        int touche1=int(codeentreserial[1]);
        if (codeentreserial[1]==code[1] && codeentreserial[2]==code[2] && codeentreserial[3]==code[3] && codeentreserial[4]==code[4] && compteur==5)
        {
          Serial.println("code bon");
        }      
      } // FIN ANALYSE
    }
  } // FIN VOID LOOP

Le soucis, c'est le suivant: Ca marche pas.
Le code entré est bien entré, et détecté.
Le code en mémoire est bien enregistré par la carte, et c'est bien celui que je lui ai donné...
Les deux codes sont reconnus, les deux codes coïncident, et pourtant, ça fonctionne pas:

Le moniteur série est sensé me renvoyer "Code bon" si les deux codes sont les mêmes (ce qui est systématiquement le cas), pourtant il reste aussi apathique qu'un légume croisé avec un paresseux sous morphine.
Je ne comprends pas, je me sens bête, un petit coup de main ne serait pas de refus !

Merci à tous !

Saad