Somma con LCD03 e Keypad

Buonasera a tutti,
questo è il primo post (scusate, la presentazione la faccio appena finito questo post, mi sono dimenticato), come da titolo sto cercando di far sommare due valori inseriti tramite il tastierino 4x3, collegato ad un LCD in i2c.
L'lcd in questione è quello della Robot Electronics.
Ho cercato in lungo ed in largo, ma non ho trovato nulla (magari non ho cercato bene, ma dubito),
allora, spiego il problema:
Dopo aver inserito la prima cifra e confermato con *, il sistema calcola subito la somma raddoppiando il numero inserito in precedenza.

Il programma è un pochino lungo, ma non riuscivo a fare il riconoscimento dei tasti/numeri in maniera più corta. (è il primo programma che faccio, a parte quelli semplici tipo "hello world" o far accendere/spegnere un led)

Sapreste darmi una mano facendomi capire dove sbaglio?

Grazie mille!!!

Davide

Dimenticavo, la libreria che uso è quella scaricata da qui:

#include <Wire.h>
#include <LCD03.h>

LCD03 lcd;
char keyinsert[8];
int c=0; 
int j=0;
uint16_t keystate;

void setup() {
  // Initialise a 20x4 LCD
  lcd.begin(20, 4);
  lcd.clear();
  lcd.backlight();
  
}

void loop() {
 keystate = lcd.readKeypad();
 if (keystate != KEYPAD_STAR) {
  Keyb();
 }
 else {  
 int a = atoi(keyinsert);
 lcd.setCursor(20);
 delay(2000);
  if (keystate != KEYPAD_STAR) {
   Keyb();   
   }
  else {
   int b = atoi(keyinsert);
   c=a+b;
   lcd.setCursor(40);
   lcd.print(c);
   }
 }  
}  
 
 void Keyb(){
  
  if(keystate == KEYPAD_1) {
    lcd.print("1");
    keyinsert[j]=49;
    j++;
  }

  if(keystate == KEYPAD_4) {
    lcd.print("4");
    keyinsert[j]=52;
    j++;
  }

  if(keystate == KEYPAD_5) {
    lcd.print("5");
    keyinsert[j]=53;
    j++;
  }

  if(keystate == KEYPAD_6) {
    lcd.print("6");
    keyinsert[j]=54;
    j++; 
  }
    
  if(keystate == KEYPAD_2) {
   lcd.print("2");
   keyinsert[j]=50;
   j++;
  }
   
  if(keystate == KEYPAD_3) {
    lcd.print("3");
    keyinsert[j]=51;
    j++;
  }
    
  if(keystate == KEYPAD_HASH) {
    lcd.print(".");
    keyinsert[j]=46;
    j++;
  } 
  
  if(keystate == KEYPAD_7) {
    lcd.print("7");
    keyinsert[j]=55;
    j++;
  }

  if(keystate == KEYPAD_8) {
    lcd.print("8");
    keyinsert[j]=56;
    j++;
  }
  
  if(keystate == KEYPAD_9) {
    lcd.print("9");
    keyinsert[j]=57;
    j++;
  }

  if(keystate == KEYPAD_0) {
    lcd.print("0");
    keyinsert[j]=48;
    j++;
  }
  delay(500);
}