CONECTAR UN

TECLADO CLASICO

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

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. El clásico fue el primero que hice y el que encontrarás aquí. No lo eliminaré por si alguien quiere consultar algo. Más abajo tienes otro video.




Pero el realmente bueno es el matricial, 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 DE CADA UNO


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 aquí para construirlo artesanalmente. De alguna forma, ambas secciones se complementan y puedes sacar ideas leyendo ambas.


TECLADO CLASICO


Convertir una calculadora de 4€ en un teclado numérico para tu NXT no es una tarea especialmente difícil, pero sí algo laboriosa. La programación en NXT-G, el software original. Lo que haremos es aprovechar la parte externa de la calculadora con sus pulsadores y vaciarla por dentro.


Ya te aviso de antemano que para hacerlo "bonito" se necesita soldador y 2 circuitos integrados PCF8574, aunque al final te daré alternativas por si no puedes soldar, o solo tienes 1 PCF, o no tienes placas de soldadura. Para que no te quedes sin tu teclado. Eso sí, son alternativas muy caseras.


Una calculadora por dentro es simplemente una colección de interruptores, un pequeño procesador y un display conectado. Por cierto, el display ya lo hemos construido, así que unir ambos lo tienes servido.


Debajo de cada tecla, y sobre un plástico o circuito impreso, habitualmente hay esto:


Teclado numerico casero 1 para LEGO Mindstorms NXT

La tecla que pulsas tiene sobre su parte inferior un material conductor (¿será grafito?) que al apretarlo, hace que esas dos partes de la foto se pongan en contacto. Dicho de otra forma, es un interruptor. Luego, simplemente hay que identificar el interruptor pulsado y actuar en consecuencia.


Por tanto, un teclado numérico no es más que una colección de interruptores, tantos como teclas, conectados al NXT más el software que lo controla. Con estos datos, ya podrías hacerte uno.


MATERIAL


Aquí explicaremos una de tantas formas posibles de hacer una.


Para construir este proyecto necesitarás hacerte con una calculadora, una placa para soldar componentes y cable. Y luego los componentes habituales en digital: 2 resistencias de 82K y 2 circuitos PCF8574. No son necesarias resistencias adicionales, ya que no hay LEDs. Poco más.


La elección de la calculadora es un tanto engorrosa. Las hay con placa soldada y las hay que llevan los interruptores impresos sobre plástico, lo que hace imposible ningún tipo de soldadura.


Aunque elijas una de las primeras, con placa, entender el circuito es un laberinto, aunque con paciencia y algunos dibujos, se puede sacar. Facilita el papel vegetal y rotuladores de colores, por cierto. Sin embargo, después de muchas pruebas, he optado aquí por vaciarlo por completo y hacer mi propia placa. Mira las fotos más adelante para verlo. Y eso es lo que explicaré aquí.


CONSTRUCCION


Si recuerdas de la construcción de un interrutor digital, la conexión se hace intercalando un interruptor entre cada salida del PCF8574 y el cable negro del NXT. Con el primer PCF podemos conectar 8 interruptores/teclas y con el segundo las 4 restantes.


Es decir, una de las "patas" de cada interruptor/tecla está conectada al cable negro del NXT y por tanto, todos ellos están conectados entre sí. En nuestro caso, y para no complicar más el circuito, conectaremos únicamente 11 de las teclas de la calculadora: del 0 al 9 y el =. El punto decimal lo dejo desconectado.


Bueno, empezamos. Desmontamos la calculadora. Habrá que quitar los tornillos y, seguramente, hacer palanca con un destornillador, con lo que alguna pestaña se romperá. Le sacamos la placa y el display, que suelen ir en un bloque y pintamos en un papel una plantilla para saber la posición exacta de los botones.


Teclado numerico casero 2 para LEGO Mindstorms NXT

Vamos a construir los interruptores sobre la placa. Para eso, "coseremos" sobre la placa 3 alambres de arriba a abajo (en negro en la imagen). Estos serán las patas interconectadas que acaban a su vez conectando con el cable negro del NXT. El resto, son alambres que no están conectados entre sí (en la foto de más abajo quedará más claro).


Teclado numerico casero 3 para LEGO Mindstorms NXT

Teclado numerico casero 4 para LEGO Mindstorms NXT

El alambre (cable rígido pelado en realidad) de la izquerda va de arriba a abajo. Los de la derecha son pequeñas "grapas" confeccionadas con ese mismo cable.


Teclado numerico casero 5 para LEGO Mindstorms NXT

Cada una de esas grapas irá conectada con un cable a un pin del PCF8574. Cada grapa soldada a un cable y ese cable al pin. Nos faltarán por conectar las 3 teclas del segundo PCF (el punto decimal no loconecto).


Teclado numerico casero 6 para LEGO Mindstorms NXT

Ahora falta acoplar el segundo PCF8574. Habría que añadir lo siguiente, que es el esquema que ya vimos en 16 I/O en un puerto, por si quieres repasar cosas.


Esquema Conectar PCF8574 16 LEDs a un Puerto de LEGO MINDSTORM NXT

Y ahora acabamos soldando los cables que faltan y los conectamos a los pines disponibles del segundo PCF. En la siguiente foto se puede ver la interconexión entre los alambres verticales "negros"... y poco más. Bueno, el manojo de cables que sale hacia arriba.


Teclado numerico casero 7 para LEGO Mindstorms NXT

De esta forma, tendremos utilizados todas las salidas del primer PCF (pines 0 al 7) y los 3 primeros del segundo PCF.


Ahora, aprovechando que nos quedan pines del segundo PCF sin usar, haremos unas conexiones que nos ayudarán en la programación. Si lo dejamos como está, varios registros se repetirán. Tendremos así dos teclas que nos darán una lectura de "253", una con dirección 64 y la otra 66.


Para evitar esto y simplificar la programación, conecta con un pequeño cable el P0 con el P7, el P1 con el P6 y el P2 con el P5. Con esto conseguiremos que las lecturas de los registros del primer PCF sean distintas a las del segundo.


Teclado numerico casero 8 para LEGO Mindstorms NXT

Si no me he dejado nada, ya solo falta comprobar las conexiones con un tester o con el Conductímetro para que no hayan conexiones entre sí entre los cables de colores y a su vez con el negro y cerrar la calculadora.


Teclado numerico casero 9 para LEGO Mindstorms NXT

Lo que falta es conectar cada cable (11 en total) a los pines del circuito y luego el negro al negro del NXT (en el board).


Teclado numerico casero 10 para LEGO Mindstorms NXT

Cuando todo funcione, ya podemos "asear" la instalación y poner conectores fijos y anudar los cables.



PROGRAMACION


IDENTIFICACION DE LAS DIRECCIONES


La primera tarea a realizar es identificar las direcciones que se obtienen. Tal como lo hemos montado, no debe repetirse ninguna. Creo que lo más sencillo (al menos yo he seguido ese proceso) es desconectar todos los cables de la placa, ir probando y apuntando los resultados en un papel.


Para probar, usaremos un pequeño programa que nos lea las direcciones de ambos PCFs. Recuerda que puedes descargar los iconos que te falten en el software necesario.


Teclado numerico casero 11 para LEGO Mindstorms NXT

NOTAS:


  • En el primer icono, el Read, recuerda quitar la pestaña del WriteReg y seleccionar el puerto 1. El tercer icono, el Text, simplemente tiene 4 o 5 espacios en la línea B de configuración. Esto sirve para visualizar correctamente los valores en pantalla sin parpadeos. Por último, en el display, quita la pestaña "Clear".


  • Estas mismas configuraciones deben ir exactamente igual en el segundo bloque de iconos.


  • Recuerda que, a veces, el PCF conserva los valores antiguos y no responde cuando ejecutas el programa de nuevo. Quita el cable del puerto y lo vuelves a enchufar, para hacer un "reset" al circuito.



  • Conecta el cable negro a la placa y desconecta todos los demás. Coge un cable al azar y lo conectas al primer pin (P0) del primer PCF. En pantalla debería aparecer 255 y 255. Empieza a apretar teclas de la calculadora hasta que alguno de los valores cambie.


    En un papel anota lo obtenido: P0 = 253 (es un ejemplo). Desenchufa ese mismo cable y lo conectas en el pin 2 y vuelves a apretar la tecla de la calculadora. Ahora tendrás P1 = 251 y así con todos los pines de ambos PCFs. Tendremos así identificadas las direcciones en una tabla.


    IDENTIFICACION DE LOS CABLES


    Ahora toca emparejar cada cable que sale de la calculadora con su tecla correspondiente. Esto es más sencillo.


    Coges un cable al azar y lo pinchas en el P0 como ya hicimos y vas apretando tecla a tecla de la calculadora. Cuando cambie, anota en otra tabla el emparejamiento o usa adhesivos en cada cable o anota su color. O sea, tecla 3, cable verde. Yo tenía varios cables verdes, así que hice a uno 1 nudo, al otro 2 y al otro ningún nudo para distinguirlos.


    Una vez todo identificado, ya tienes lo necesario para un primer programa.


    Dibuja 2 PCFs en un papel y anota a qué pin conectas el cable que viene de cada tecla. Por si se suelta, saber luego dónde va y disponer de toda la información.


    PRIMER PROGRAMA: 1 DIGITO


    La primera tarea es mostrar el dígito adecuado en el NXT al pulsar una tecla en la calculadora. Empezaremos por presentar 1 solo dígito y este programa lo usaremos después para escribir más de una cifra en pantalla.


    Para este primer programa, necesitaremos crear algunas variables (en el menú superior: Edit/Define Variables/Create). Recuerda que tienes un tutorial sobre variables. Debes crear las siguientes:


    De tipo numérico: "num dec", "64", "66" y "display".

    De tipo lógico creamos una variable: "fin ident".


    64 y 66 son las lecturas del PCF correspondiente. Para no tener que manejar dos variables, ambos valores los "juntaremos en uno solo: display. "num dec" es el valor decimal a presentar en la pantalla del NXT.


    Por último, "fin ident" nos identificará cuándo pulsamos el signo "=". Cuando esto suceda, pondremos fin a la escritura de números. Nos servirá para controlar el fin del programa al pulsar esa tecla. Puedes descargar el programa a continuación:


    Descargar Programa ident tecla


    En el propio programa se dan explicaciones de lo hace cada cosa. En el programa hay al final un switch con una pestaña por cada tecla. Tendrás que adaptar los valores escritos en tus listas concretas para que el programa funcione correctamente. Bueno, en caso de que no lo adaptes, simplemente cuando pulses el 3, saldrá un 8 en pantalla.


    Este programa, se usará en forma de "My Block" para el siguiente paso. Habrá que unirlos todos para que funcione, pero seguimos paso a paso.


    SEGUNDO PROGRAMA: 1 NUMERO DE VARIOS DIGITOS


    El primer programa identificaba la tecla de la calculadora pulsada. Con este segundo programa vamos a escribir un número completo, de varios dígitos.


    El núcleo del programa (me volví loco para sacarlo, así que gracias por las colaboraciones) es el siguiente: introducimos un número en el teclado y lo almacenamos en una variable. Ahora el programa queda en espera hasta la siguiente pulsación. Entonces, multiplicamos x10 el valor almacenado antes y le sumamos el que acabamos de teclear. Y así sucesivamente hasta que apretemos el igual para acabar.


    Las variables usadas son las siguientes:


    De tipo numérico: "Aux 1" y "Result".

    De tipo lógico: "Fin".


    El programa, que incluye por cierto al anterior y que también está comentado, sería el siguiente:


    Descargar Programa Teclado num


    PROGRAMA FINAL: TECLADO NUMERICO COMPLETO


    Bueno, pues ya lo tenemos todo. Simplemente un pequeño programa para visualizar el resultado:


    Teclado numerico casero 12 para LEGO Mindstorms NXT

    Los 2 primeros iconos ponen simplemente "Pulsa = para hacer reset". Luego convertimos en texto el valor obtenido. El siguiente icono (icono Text) incorpora 4 o 5 espacios en la "B" para que el resultado no se solape con el anterior. De todas formas, si lo quieres descargar, pincha en el icono.


    Descargar Programa Teclado ejem


    USOS


    El valor obtenido lo hemos presentado en pantalla, pero lo puedes almacenar en una variable para usarlo posteriormente. O puedes repetir el ciclo 2 veces con 2 variables y sumarlas entre sí.


    Con un teclado de este tipo, puedes entrar valores para modificar numéricamente la potencia de motores o puedes usarlo para el famoso MOC de la caja fuerte con código de seguridad. En fin, son solo ideas. Hay tantas...!



    LOS VIDEOS



    EL RELOJ


    Programar el reloj es muy sencillo. Simplemente configura el motor en "Degrees". Lee el número pulsado en la calculadora y lo multiplicas por 30. Si pulsas 12 y lo multiplicas por 30, te dará 360. 360 grados es 1 vuelta.



    LA CAJA FUERTE


    Hay muchos ejemplos de caja fuerte y algunos muy chulos. El programa, también muy breve, consiste en comparar el valor introducido por el teclado con el número que hayamos prefijado (icono =). En ese momento, el ciclo se para y el programa avanza para mover el motor. Luego simplemente movemos el motor a la inversa para cerrar.


    Teclado numerico casero 13 para LEGO Mindstorms NXT

    Por cierto, el programa se inicia con un reset al motor para que los grados queden a cero, y sea esa la posición inicial de referencia.


    El icono "Read" del segundo ciclo identifica cuando se pulsa el = de nuevo para cerrar. En mi caso, el registro correspondiente al igual fue 127. Cuando obtengo ese número, avanza el programa y se cierra la caja.


    APENDICES


    CIRCUITO CON 1 SOLO PCF8574


    Si tienes por lo menos uno, puedes crear una placa con un circuito alternativo. A ver si logro explicarlo bien. El circuito anterior consistía en una colección de interruptores, uno por tecla. Cada interruptor estaba compuesto por 2 alambres: uno masa (negro) y otro al pin correspondiente del PCF.


    Este nuevo circuito constará de 3 alambres o cables por cada tecla en lugar de 2. El primero será igualmente masa (negro) y estarán todos ellos conectados entre sí. El segundo alambre será común a toda la primera fila. Lo mismo para la segunda y tercera.


    O sea, la idea es que el primer interruptor esté conectado al cable de masa, al cable que une toda la fila 1 (en blanco en la imagen) y al cable que une toda la columna 1 (en rojo).


    Teclado numerico casero 14 para LEGO Mindstorms NXT

    Cuando pulsemos la tecla de la calculadora, los 3 alambres quedarán unidos, dando un único valor en su lectura. He de decir que probé a hacerlo como primera opción, pero luego era imposible acertar a pulsar los 3 a la vez con la calculadora montada.


    La única opción que fui capaz de hacer funcionar, fue apretando manualmente con un disco de plata sobre cada tira de 3. Ni siquiera juntando los cables (el último interruptor a la derecha abajo) funcionó en el interior de la calculadora. Obviamente, la programación cambia.


    Teclado numerico casero 15 para LEGO Mindstorms NXT

    SIN SOLDADOR


    Bueno, sin soldador puedes pelar las puntas de los cables más largos y anudarlos a la placa. Y si tampoco tienes placa... pues un cartón. Más casero imposible.


    SIN NINGUN PCF


    En lugar de todo esto, podrías usar una colección de 10 interruptores en una placa board, siguiendo las ideas de 4 interruptores en la sección de sensores analógicos.


    La idea sería usar un puerto para 5 interruptores y otro puerto para los otros 5, usando las correspondientes resistencias. Cada interruptor sería un número. Tendrás que seguir los esquemas de aquella sección para poder hacerlo así. No tiene nada que ver con toda esta parte digital. Como solo tengo 7 interuptores...


    Teclado numerico casero 16 para LEGO Mindstorms NXT

    Podrías incluso conectar solo 5 interruptores. El primero de ellos sumaría 100 con cada pulsación. El segundo sumaría 50. Los siguientes 10, 5 y 1 respectivamente. Sería otra forma de disponer de un teclado numérico casero. El caso es que no te quedes sin el tuyo.


    up-rojo-flecha
    Conectar un nunchuck
    Conectar un teclado matricial a NXT
    .