Puede usar un par de codificadores 74LS148 como se muestra en su hoja de datos.
Tambiénhaychipsespecíficosqueescaneanlosbotonesconectadoscomounamatrizcomo 74C922
O si tiene la capacidad de programar una, una pequeña ROM o FPGA puede hacerlo.
Hay otras formas que usan muchos diodos.
Sin embargo su declaración "tiene que hacer esto sin que un botón influya en el otro" y los comentarios implican que necesita la capacidad de detectar más de un botón al mismo tiempo. Esa es una proposición completamente diferente.
En ese caso, necesitarías algún tipo de escáner de teclado. Tal vez se comunique a través de I2C como un TCA8418 .
Otra alternativa es convertir tus botones en un convertidor analógico a analógico rudimentario y transferir ese valor analógico a cualquier convertidor analógico a digital que tengas disponible. Aunque tener 16 botones usando ese método sería empujar esa técnica un poco.
ADDICIÓN
Como solo hay 15 conmutadores, otra manera de hacer esto es usar un registro de desplazamiento en lugar de una matriz. Eso significará que solo necesita tres pines en el micro y un algoritmo adecuado para manipular el registro de desplazamiento.
Tipo de unidad: serie en paralelo 74LS673: alimenta una salida baja a través del registro de desplazamiento y vuelve a leer el estado en la línea común.
Tipodelectura:paraleloenlasalidaenserie74LS674:Carguedesdelosconmutadoresenelregistrodedesplazamiento.Todoslos16conmutadoresestánconectadosa16detectores,luegotransfierenlapalabraalmicro.
Creo que lo que más me gusta es lo último, ya que puedes tomar el estado completo del interruptor en un momento dado.
Con todo esto, deberías manejar el rebote en el código.