Tengo estos tres bocetos de conexión del teclado, todos los cuales he visto en varias aplicaciones, y algunos también los he usado, pero quiero saber si hay alguna ventaja de uno sobre el otro. El teclado se conectará directamente a los pines DIO de un microcontrolador PIC, PIN 1,2,3 como SALIDAS y PIN A,B,C,D como entradas.
El teclado no estará a bordo, pero se conectará a través de cables a la placa PCB, no sé si esto hace alguna diferencia.
El número 1 puede ser destructivo para su controlador. Si usaría salidas push-pull para las columnas y las filas como entradas, al presionar dos teclas en la misma fila se cortocircuitará la fuente de alimentación a través de las salidas del microcontrolador. Si las salidas del microcontrolador se pueden configurar como de drenaje abierto, entonces no hay problema, pero las salidas también deben tener resistencias pull-up. Entonces básicamente tienes el número 2, pero con los pull-ups integrados.
Número 2. La misma historia si usara las filas como salidas. Usar las columnas como salidas tiene más sentido, ya que R1-R3 evita un cortocircuito de las salidas. Tenga en cuenta que un nivel de salida bajo verá la resistencia en serie/pull-up como un divisor de voltaje, por lo que la entrada será de 0,1 Vcc, aunque eso no suele ser un problema.
El número 3 evita el divisor, pero las resistencias en las entradas no cumplen ninguna función. Una variante sin la resistencia en serie servirá.
Entonces 1) puede ser un absoluto no-no. 3) es un poco mejor que 2) porque no tiene el divisor de voltaje, pero puede prescindir de la resistencia en serie.
Simplemente podría agregar diodos al primer esquema si su microcontrolador tiene pull-ups o pull-downs incorporados.
El ejemplo que se muestra supone que tiene pull-ups en sus entradas (para seleccionar una columna, debe reducirla) y el estado de la clave está invertido.
Si tiene menús desplegables en sus entradas, invierte la polaridad de los diodos y, para seleccionar una columna, debe subirla. No es necesario invertir el valor leído.
El primer esquema está bien suponiendo que esté utilizando un enfoque de escaneo de dos fases. En la fase 1, los pines GPIO de la fila se configuran como entradas conlas resistencias pull-up están habilitadas y los pines GPIO de la columna están configurados como salidas establecidas en GND. En la segunda fase, los papeles se invierten. En cada caso, la lectura de entrada de 4 bits (o 3 bits) se almacena y la "unión" de las dos fases da un valor de 8 bits (o 7 bits) que puede decodificar en "el botón X fue presionado." Por supuesto, hay combinaciones de botones que son ambiguas para decodificar en este esquema (por ejemplo, colineales). También deberá proporcionar un pequeño retraso entre el cambio de las funciones de los pines y la lectura de las entradas para que los pines puedan cargarse. Dicho esto, es un buen enfoque de hardware mínimo, y siempre que obedezca las reglas del software, no hay peligro para su controlador.
Oli Glaser
stevenvh
TiOLUWA
stevenvh