CONECTAR UN

TECLADO MATRICIAL

Conectar un teclado numerico matricial a LEGO MINDSTORMS NXT
down-rojo-flecha

Actualización 28/8/2011: Bajar a Proyecto para pantalla táctil.


TECLADO CLASICO Y TECLADO MATRICIAL


Propongo 2 formas diferentes de conectar un teclado numérico al NXT: un teclado clásico y un teclado matricial. En el clásico puedes encontrar muchas ideas para un montaje casero si no dispones de este teclado.






El teclado matricial es el realmente bueno, tanto en la parte de construcción y conexión del teclado como en el programa... una vez sabes cómo hacerlo. Hasta ahora era un misterio para mi conectarlo. Debo la idea original del circuito, como en otras ocasiones, a "Tranki".


VENTAJAS DEL TECLADO MATRICIAL


Un teclado matricial comercial, tiene varias ventajas sobre el teclado clásico casero. La primera y más evidente es que no necesita soldador para su construcción.


Hay más ventajas. Sólo será necesario un único PCF8574 en lugar de 2. Estéticamente es mucho más limpio, no hay más que ver sus fotos. Su construcción es más sencilla y también la programación se simplifica un poco. Por último, será más fácil integrarlo con piezas de LEGO e incluso hacer un teclado definitivo si dispones de soldador.


La única ventaja del teclado clásico que se me ocurre es que tienes más opciones para adaptarlo según los componentes de que dispongas. También puedes crear un teclado matricial siguiendo parte de las explicaciones que doy en el teclado clásico para construirlo artesanalmente si es que no dispones de este teclado. De alguna forma, las secciones se complementan y puedes sacar ideas leyendo ambas.


TECLADO MATRICIAL


Este teclado es peculiar en algún sentido. Vamos primero a hacer una pequeña descripción. Existen distintos tamaños. Aquí usaremos uno de 3x4. Para su conexión, consta de 7 pines por la parte trasera.


Teclado matricial casero para LEGO Mindstorms NXT

Por dentro es muy simple. Existe un cable que conecta la primera fila, es decir, los botones 1, 2 y 3. Este cable llega al pin 1 (M1 en la imagen siguiente). Es un simple cable, no hay nada más. Otro cable une los botones de la primera columna, es decir, los números 1, 4, 7 y *. Este cable acaba en el pin 5 (M5 en el dibujo siguiente).


Cuando pulsas el botón 1 del teclado, lo que haces en realidad es unir el cable M1 y el M5. Es como si cerraras un interruptor entre ellos. Localizando este interruptor, sabrás el botón pulsado. El resto de conexiones es como sigue:


Teclado matricial casero para LEGO Mindstorms NXT

Aunque veas una cuadrícula en la imagen anterior, recuerda que los botones solo están unidos por filas y columnas, pero no entre ellas.


Si le das la vuelta al teclado, la vista posterior de los pines es:


Teclado matricial casero para LEGO Mindstorms NXT

Teclado matricial casero para LEGO Mindstorms NXT

Es decir, visto frontalmente:


Teclado matricial casero para LEGO Mindstorms NXT

MATERIAL


El material necesario para la construcción de este teclado sería el siguiente:


  • Un Board, cables de conexión del NXT, y cables cortos para las conexiones.

  • 1 CI PCF8574

  • 2 resistencias de 82K

  • 3 resistencias de 4,7K (amarillo-morado-rojo)

  • 1 Teclado matricial de 3x4 botones.


  • CIRCUITO


    Lo presentaremos por etapas, para mayor claridad. Partiremos del circuito básico. Este circuito usa las resistencias de 82K.


    Esquema I2C circuito digital PCF8574 Mindstorm NXT

    Y añadimos lo que falta. Las resistencias de la izquierda son las de 4,7K, que conectan directamente al cable verde del NXT:


    Teclado matricial casero para LEGO Mindstorms NXT

    Los cables rojos hacen referencia a las columnas. Estos son los únicos que llevan resistencias. Los otros 4 que conectan desde M1 hasta M4 corresponden a las filas del teclado.


    MONTAJE


    Bueno, vamos a ello. Lo primero, el montaje digital básico. No me extenderé muchó, ya que hay información adicional en el circuito básico.


    Teclado matricial casero para LEGO Mindstorms NXT

    Ahora colocamos las resistencias de 4,7K (o 4K7):


    Teclado matricial casero para LEGO Mindstorms NXT

    Para simplificar, quitaremos las resistencias y conectaremos los primeros cables al integrado. Verás que coinciden con los cables blancos anteriores.


    Teclado matricial casero para LEGO Mindstorms NXT

    Ahora más cables al CI


    Teclado matricial casero para LEGO Mindstorms NXT

    Teclado matricial casero para LEGO Mindstorms NXT

    Todo junto quedaría así de bonito:


    Teclado matricial casero para LEGO Mindstorms NXT

    Y por último, conectamos el teclado, haciendo coincidir las 7 pestañas:


    Teclado matricial casero para LEGO Mindstorms NXT

    Pues ya está, ya lo tenemos.


    IDENTIFICACIÓN DE LA TECLA PULSADA


    Curiosamente el circuito no es exactamente equivalente al de montar 7 interruptores a un PCF8574. Los interruptores se montan habitualmente entre el pin correspondiente del PCF y el cable negro del NXT. Aquí, como puedes ver, ninguno de los pines del PCF con el cable negro.


    El funcionamiento de este montaje es algo diferente. Para identificar la tecla pulsada usa otro método distinto al del teclado clásico. Vamos a explicarlo.


    Te habrás dado cuenta de que las columnas del teclado están conectadas a una resistencia y luego al cable verde del NXT, la alimentación. Las filas del teclado no están conectadas a resistencia ni al cable verde. Ni tampoco a negro como era habitual.


    La idea es la siguiente. "Encendemos", como si se tratara de un LED la columna 1. Para eso usaremos un icono WRITE. Y ahora "leemos" si hay alguna fila pulsada con el icono "READ". Si es así, solo podrá tratarse del 1, el 4, el 7 o el *.


    Una vez hecho esto, "apagamos" la columna 1 y "encendemos" la columna 2. Volvemos a leer las filas. En caso de obtener algún resultado, solo podrá tratarse de los números 2, 5, 8 o 0. Y repetimos el proceso para la tercera columna.


    Dicho de otra forma, estamos haciendo un "escaneado" del teclado columna a columna. A partir de los valores obtenidos con el icono READ, sabremos la tecla pulsada, ya que este proceso se produce muy muy rápido.


    Una vez obtenido un valor, hay que asignarlo. Es decir, cuando leamos "192" por ejemplo en pantalla, lo asignamos a la tecla correspondiente pulsada. Esto se hace con un ciclo. El programa que realiza el escaneado y lo presenta en pantalla sería el siguiente, y DEBES GUARDARLO EN LA CARPETA LEGO Creations/MINDSTORMS Proyects/Profiles/Default/Blocks/My Blocks.


    Descargar Programa Identificar tecla matricial para NXT

    En el icono verás 2 salidas. Tecla y tecla binaria. "Tecla" presenta el valor del botón pulsado. "Tecla binaria" presenta la lectura que se obtiene del circuito integrado al pulsar cada una de las teclas.


    Teclado matricial casero para LEGO Mindstorms NXT

    Esto es necesario para programar posteriormente estas teclas. El * lo puedes programar para borrar la pantalla y resetear y el # como ENTER. También es necesario para ver si hemos pulsado el cero.


    PROGRAMA


    Un problema que no hemos comentado en el programa anterior es que, a menos que lo evitemos, el programa escribiría múltiples valores en pantalla con una única pulsación de tecla. Esto se evita escribiendo el valor una vez soltemos la tecla, y no antes.


    El icono anterior identifica la tecla pulsada, pero a partir de ahí tenemos que "construir" un número cuando pulsemos varios botones seguidos. Como casi siempre, es fácil si sabes cómo. La idea es almacenar el valor de la tecla pulsada en una variable.


    Esperamos una segunda pulsación. En ese momento, multiplicamos x10 el valor de la primera pulsación y se lo sumamos a la segunda. Y así sucesivamente. También he programado un "ENTER" cuando pulsas el # y un RESET al pulsar el *.


    Al igual que en el caso anterior, DEBES GUARDAR EL PROGRAMA EN LA MISMA UBICACION DE ANTES.


    Descargar Programa Teclado Matricial para NXT

    Este último icono incluye en su interior al otro que ya habías descargado, por lo que el teclado se controla únicamente con este último programa.


    CONEXIONES DEL ICONO


    Una vez guardados ambos programas en la carpeta de My Blocks, ya solo te queda probar. Verás que del icono "cuelgan" 4 salidas. Hay una salida lógica y 3 numéricas. La salida lógica identifica cuando está pulsado el ENTER. Los otras 3 te sugiero que las presentes en pantalla con un icono display (previamente convertido a número) y veas los resultados. Con este icono se controla todo el teclado:


    Teclado matricial casero para LEGO Mindstorms NXT

    TECLADO DEFINITIVO


    Si dispones de soldador, puedes construir un teclado definitivo montado sobre una placa de soldadura. Habrá que hacer unas perforaciones en ella para que entren los pines y soldar todo lo demás. Los componentes quedan emparedados entre el teclado y la placa.


    Teclado matricial casero para LEGO Mindstorms NXT

    Con este teclado he hecho el video del inicio de la página.


    Teclado matricial casero para LEGO Mindstorms NXT


    IDEAS PARA UNA PANTALLA TACTIL


    Bueno, pues todo esto que acabamos de explicar puede ser la base de una pantalla táctil. El principio de funcionamiento es el mismo. Lo que cambia es la construcción física del dispositivo. Quizás más adelante construya un proyecto basado en esto. Voy a intentar dar alguna explicación al respecto.


    Una pantalla táctil es una pantalla normal que tiene por encima una trama de finos hilos dispuestos en paralelo, unos en vertical y otros en horizontal, exactamente igual que la foto que ya hemos visto casi al principio de la página. Entre ellos, hay una fina capa de un film transparente que impide el contacto entre los hilos.


    Esa capa de film tiene un pequeñísimo agujero justo en cada una de las intersecciones de los cables. En reposo no se tocan (siempre que el film sea suficientemente grueso y el agujero pequeño). Y al presionar con el dedo en un punto de la pantalla (sobre una intersección) los ponemos en contacto y a partie de ahí, ya es exactamente igual a todo lo explicado anteriormente.


    NO he probado el proyecto y quizás en reposo todos los cables se toquen haciendo inutil el esfuerzo, pero todo es probar. Si en lugar de 10 intersecciones necesitas más, revisa la sección de 16 I/O en un puerto y siguientes. Si funciona, puedes hacer 2 cosas: dotar a tu NXT con una pantalla táctil (¿te imaginas?) y contarnoslo en el foro.


    up-rojo-flecha
    Conectar un teclado clásico
    Conectar servomotores a NXT
    .