Affichage (lcd) d'un nombre à l'aide d'un keypad 12 touches

Bonjour tous le monde, j'ai une petite difficultés actuellement dans mon code arduino et j'aimerais si possible qu'une personne généreuse puise m’éclaircir dans mon programme.
Je suis actuellement en classe de Term STI2D et lors de mon projet je dois réaliser un programme arduino qui permet de choisir un nombre (de max 2 chiffres) à l'aide d'un keypad pour que ce nombre s'affiche par la suite sur un écran lcd.
Mon projet étant de créer un coupe gâteaux automatique qui nous permettra de choisir un nombre de parts souhaité pour qu'il nous coupe le gâteaux tous seul en nombre de parts choisie.
Actuellement je m'occupe du choix du nombre de parts ( keypad 12 touches reliés à un écran lcd ).
Mon problèmes actuellement est de faire en sorte qu'on ne puisse pas écrire plus de 2 chiffres et de pouvoirs valider le nombre avec la touche ( * ).
voici mon code pour le moment:

//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables...

// --- Inclusion des librairies utilisées ---

#include <LiquidCrystal.h> // Inclusion de la librairie pour afficheur LCD

#include <Keypad.h> // inclusion de la librairie pour clavier matriciel

// --- Déclaration des constantes ---

//--- Constantes utilisées avec le clavier 4x4
const byte LIGNES = 4; // 4 lignes
const byte COLONNES = 3; //3 colonnes


// --- constantes des broches ---

const int C3=17; //declaration constante de broche
const int C2=16; //declaration constante de broche
const int C1=15; //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=5; //declaration constante de broche
const int L3=4; //declaration constante de broche
const int L2=3; //declaration constante de broche
const int L1=2; //declaration constante de broche

// --- Déclaration des variables globales ---

//--- Définition des touches
char touches[LIGNES][COLONNES] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};

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

char touche; // variable de stockage valeur touche appuyée


// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---

LiquidCrystal lcd(RS, E, D4, D5, D6, D7);// Création d'un objet LiquidCrystal = initialisation LCD en mode 4 bits


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


//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme

void setup()   { // debut de la fonction setup()

// --- ici instructions à exécuter au démarrage ---

lcd.begin(20,4); // Initialise le LCD avec 20 colonnes x 4 lignes

delay(10); // pause rapide pour laisser temps initialisation

// Test du LCD

lcd.print("LCD OK") ; // affiche la chaîne texte - message de test
delay(100); // pause de 2 secondes

lcd.clear(); // // efface écran et met le curseur en haut à gauche
delay(10); // pour laisser temps effacer écran



// les broches de lignes et d'entrée sont configurées automatiquement lors de l'initialisation du clavier

// ------- Broches en sortie -------  


// ------- Broches en entrée -------  


// ------- Activation du rappel au + interne des broches en entrée si nécessaire -------  


} // fin de la fonction setup()
// ********************************************************************************

//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension

void loop(){ // debut de la fonction loop()

// --- ici instructions à exécuter par le programme principal ---

touche = clavier.getKey(); // lecture de la touche appuyée

if (touche != NO_KEY){ // si une touche a été frappée -- gestion de la touche appuyée

  if (touche=='#') lcd.clear(); else lcd.print(touche); // efface écran si appui # sinon  affiche touche
  delay(300); // pause entre 2 appuis

  

} // fin gestion de la touche appuyée

}

Merci,
Cordialement Awixxx!

Vous pouvez jeter un oeil à mon petit tuto, il y a un code pour gérer l'entrée d'un keypad

c'est typiquement une définition de programme qui se prête bien à la programmation par machine à états (cf mon tuto éventuellement)