Clavier numérique à multiples appuis

Bonsoir !

Voilà plusieurs fois que je cherche à faire un clavier numérique arduino qui réagirait comme un clavier téléphonique.
Pour cela je me suis fourni un clavier à membrane matriciel (celui sous la forme 3 colonnes sur 4 lignes).
J’arrive bien à lire la valeur d’une touche unique avec le code suivant :

#include <Keypad.h>
const byte ROWS = 4; //4 colonnes
const byte COLS = 3; //3 lignes
//symboles du clavier
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //pins des lignes
byte colPins[COLS] = {6, 7, 8}; //pins des colonnes
Keypad customKeypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); //initialiser le clavier
void setup(){
  Serial.begin(9600);
} 
void loop(){
  char customKey = customKeypad.getKey(); //lire la touche appuyé
  Serial.println(customKey);
}

Ce que je souhaite faire, c’est de pouvoir lire plusieurs valeurs à la suite pour ensuite les “aligner”,
je m’explique admettons que j’appuie sur la touche 1 et ensuite la touche 2, j’aimerai que ma valeur affiché soit 12.
Mais le problème étant que les touche sont des char et que j’aimerai obtenir une int ou une string.

Je fais cela afin de, par la suite, être capable de réaliser des opérations mathématiques avec ces valeurs.
Pour cela, j’ai pensé à utiliser un array de mes touches utilisés et ensuite réassembler les valeurs de l’array mais j’ai pas trouvé de solutions qui fonctionnent comme je l’espérais, ou du moins je n’ai pas réussi à faire ce à quoi je pensais.
La valeur sera affiché sur un écran LCD par la suite dans un menu.

Après quelques recherches, j’ai trouvé différentes fonctions menant à l’addition de string tel que concatenation mais je n’ai pas réussi à l’adapter à mon projet.
Un autre problème étant que, parfois en additionnant ces nombres on obtient des lettres, sûrement dû au fait que ce soit du code ASCII ?

Alors je viens vers vous pour avoir un peu d’aide sur le côté logique de la chose et pourquoi pas sur la partie code. J’ai trouvé, sur le forum, des personnes ayant du mal à appliquer ce même système, mais je n’ai malgré tout pas réussi à faire ce à quoi je m’attendais.
Merci de votre lecture et de votre aide, en espérant avoir été clair !

Tu peux concaténer des lettres dans un objet de type String, mais pour éviter l'effet gruyère dans la mémoire, utilise la fonction reserve() dans le setup() avec une valeur suffisamment grande pour tout stocker. Ensuite, tu peux écrire par exemple, si inputString doit être le résultat de la concaténation:

inputString += inChar;

Merci, mais le problème étant que je n’arrive pas à créer un array de mes valeurs correctement. J’ai créé mon array avec les valeurs qui sont stockés à l’intérieur, je me retrouve bloqué par la suite :

#include <Keypad.h>
const byte ROWS = 4; //4 colonnes
const byte COLS = 3; //3 lignes
//symboles du clavier
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //pins des lignes
byte colPins[COLS] = {6, 7, 8}; //pins des colonnes
Keypad customKeypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); //initialiser le clavier


char values[3];
byte value_length = 0;
String str;

void setup(){
  Serial.begin(9600);
} 
void loop(){
  char customKey = customKeypad.getKey(); //lire la touche appuyé
  if(customKey){
    values[value_length] = customKey;
    value_length++;
    str = values;
    if(str.length() > 3){
      str = "";
    }
    Serial.println(str);       
    }
}

Lorsque je déclare str = “”; Je n’arrive plus à lire de nouveau les valeurs prises par le clavier. serait-il possible de limiter le nombre de valeurs dans la String ? car j’aimerai avoir une string qui contient au max 2 caractères.

Est-ce que tu as essayé les exemples fournis dans Fichier>Exemples>Strings (en particulier StringLength) ?

Je viens de regarder et en effet, cela pourra m'être utile dans mes recherches, merci