intentare responderte el tema de los diodos de porque estan alli.
Para que una matriz de pulsadores funcione correctamente existe la forma de programarla para detectar el estado de pulsado de cada uno de los pulsadores.
Supongamos que tienes una matriz de 6x6, con sus 36 pulsadores numerados de izquierda a derecha y de arriba a abajo desde el 1 al 36.
La forma de sensar el estado de cada pulsador es poniendo a nivel alto de a una por ves cada una de las columnas y sensar el estado de las filas.
Suponiendo que no tienes los diodos, imagina la situación de pulsar simultaneamente los pulsadores 2, 5 y 14.
Cuando te pongas a ver el estado de los pulsadores colgados en la columna 5 (RB3) detectaras señal en las filas 1 (RC2) y 3 (RC1) y tu programa interpretará que has pulsado los botones 5 y 17, cuando en realidad no has pulsado el 17.
Cuando utilizas los diodos, la señal que estas enviando por la columna 5 no tiene forma de llegar al pulsador 14 por lo que no veras señal en la fila 3.
Para esta aplicación use delay de 2,5ms pero para esparar a que la tensión en cada columna sea la correcta y funcionaba bien.
Lo de los condensadores no sabria decirte, pero imagino que seria un condensador y una resistencia.
Saludos, Willy