comprendre un bout de code

Le tableau

char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

sert à définir les significations des touches. C'est uniquement pour simplifier la vie du programmeur, l'Arduino se contente des numéros de colonne et de ligne de la touche appuyée pour savoir de quelle touche il s'agit. Toi, avec ce tableau, tu sais que c'est un 2 ou un 4, c'est plus confortable.

et la booléenne "cancel" a quoi elle sert (à l'annulation?)En l'état du programme : à rien. Je suppose que ça peut servir plus tard, si tu affiches d'autres choses (minutes, secondes).