Convertir un teclado ZX82 espectro en un teclado USB expandible con Arduino (3 / 3 paso)

Paso 3: Construir el teclado software de Arduino

Primero lo corro a través de matrices así que usted puede ver la teoría y luego te mostraré cómo está escrito el controlador utilizando el IDE de Arduino. Si usted es un codificador seguro y quieres saltarte esto, puede obtener una copia del código completo en la página de recursos de mi sitio web, AltoidsDrone.com.

Para recapitular, la información clave para escribir el programa que nos reunimos en el último paso fue:

  • La película con 5 contactos tiene las líneas de datos
  • Las líneas de datos utilizan los pinesA0-A4 y tienen resistencias pull-up a + 5V
  • La película con 8 contactos tiene las líneas de dirección y utiliza pines digitales 2-9
  • El teclado está dispuesto en una matriz de 5 × 8 (datos x dirección)

Cómo funciona una matriz de teclado

Una matriz de teclado es una red de cables, tales como las líneas de dirección y datos formando la cuadrícula de 5 x 8 en el espectro. Cada botón es un botón que se cruza con una fila con una columna (las cruces de la red) y físicamente todos los botones se mantienen abiertos por defecto. Esto significa que las filas y columnas no están conectadas y no corriente (o voltaje) se pasa de una fila a una columna o viceversa.

Hay dos tipos de matriz, pull-up y pull-down. Usted puede encontrar más información acerca de las diferencias operacionales aquí. El teclado original del espectro había utilizado una configuración pull-up. La cosa para recordar es es bajo en nuestra matriz, no alto. Así que cuando una tecla es un bajo voltaje que necesitamos para activar y luego buscar. La primera imagen muestra cómo funciona la matriz.

En las anteriores cuatro rejillas, se presiona el botón conexión de la segunda columna a la segunda fila. Para comenzar con todo en alto. La primera columna se cambia a bajo, y el controlador comprueba la tensión en cada fila para ver si hay una caída (primer grid). Se presiona ningún botón en la columna para todas las filas en 5V. La primera columna devuelve alta, y la segunda columna se envía baja (segunda imagen). Las filas secuencialmente se comprueban otra vez. El botón presionado en la segunda fila se conecta la fuente de 5V de la segunda fila a los 0V de la segunda columna por medio de la resistencia + (tercera imagen). El regulador detecta el 0V en esa fila y sabe que el segundo botón de la segunda columna es que la letra 'j' tan salidas de la tecla 'j'. El ciclo continúa a lo largo de las columnas y las filas, a continuación repite (Cuarta imagen).

En Resumen, es el funcionamiento de una matriz. Así, en la práctica todo nuestro controlador del teclado se tiene que hacer es realizar el mismo ciclo de bajada de cada columna y comprobando secuencialmente las filas de esa columna para 0V. Entonces puede consulta de pulsación de tecla a la salida a la USB.

El software de escritura

Yo estoy proporcionando el controlador de software completos aquí para que usted pueda ver como funcionamos a través de poner juntos. Si eres nuevo en codificación para Arduino, tiene un boceto en blanco abierta y puedes poner el código a medida que vamos. Este tutorial también está disponible con resaltado de sintaxis completo a través de este enlace.

Lo que nos da este programa es las letras A-z en superior y minúscula, los números 0-9, un espacio, retroceso, bloqueo de mayúsculas y retorno. Esto cubre los aspectos básicos de lo que usted necesitará usar una computadora; Créeme, con un espacio diminuto botón en la parte inferior, usted no querría hacer procesamiento de textos en este teclado. Conectados en todas nuestras claves y contablemente, por lo que si desea hacer cada función en el trabajo de teclado, se puede añadir en el programa más adelante.

Fiirst, cambiar la placa a Leonardo o el LeoStick. Vaya a herramientas > Board y seleccione uno utiliza.

Comenzaremos con la estructura del bosquejo básico:

Arriba el setup(), necesitamos declarar nuestras variables y escribir nuestros datos de asignación de teclas.

Los números enteros 'datos: nada' y 'addressNo' especifican el número de filas y columnas respectivamente. Como tal, la matriz de caracteres de 'Teclado' es 8 por 5 abajo (coincidencia de nuestros conectores de membrana de teclado) y dos de profundidad superior y minúscula. Los arreglos de discos 'dataPin' y 'dirección' coincidir nuestros números pin soldado y se utilizan para fijar fácilmente y utilizar las conexiones del teclado (o modificarlos fácilmente sin cambiar el código funcional). Los espacios en blanco en la parte inferior son el espacio (A4, 2), volver (A4, 3), retroceso (A3, 2) y CAPS-LOCK (A4, 4).

Nota: Este controlador funcionará para cualquier matriz de teclado. Todo lo que necesita hacer para un teclado diferente se establece las variables de tamaño, pernos y mapa de claves para teclado en el código anterior. El resto funcionará igual. Si está utilizando una configuración hacia abajo, simplemente intercambiar todas las altas y bajas, que nos va a venir pronto.

Ahora sólo necesitamos declarar algunas variables más para nuestra lógica de programa. La variable boolean 'wasReleased' que ayudará a asegurar que el teclado produce un teclazo por prensa, dándole ' n ' en lugar de 'nnnnnnnnnnnnnn'. Pop estos en directamente bajo el código anterior.

Ahora podemos pasar a la sección setup() del bosquejo. En esta sección que deba configurar los pines y los puso en un estado listo si es necesario, entonces nuestra función de teclado. En lugar de especificar individualmente cada pin, podemos utilizar para bucles para salvar a repetición, por lo tanto, las matrices, 'dataPin' y 'dirección' contiene los números que podemos referirnos aquí. Los primeros ciclos del bucle a través de nuestros pins digitales (las líneas de dirección). Estos son los que fijamos a alta o baja, por lo que declara cada uno como una salida y establece en su estado por defecto del alto.

Asimismo, el segundo bucle se ejecuta a través de los pines analógicos (nuestras líneas de datos) y declara a cada uno como una entrada.

Finalmente, iniciamos la interfaz USB para su uso como un dispositivo de interfaz.

Es el final de nuestra sección setup(). Podemos ahora pasar al loop(), donde residirá el resto del código. A medida que vamos a poner '...' donde irá el siguiente trozo de código. El loop() ciclo las líneas de dirección y comprobar las líneas de datos, luego la tecla correspondiente de salida. Básicamente, utilizaremos otra vez para bucles con la siguiente estructura:

A bucle for para las líneas de dirección, que la línea de dirección que utiliza baja al principio y vuelta a elevado al final los ciclos:

Mientras que la línea de dirección es baja, tenemos que ejecutar a través de las líneas de datos a ver si alguno de ellos es baja, indicando una prensa del botón. Donde los '...' es, vamos a utilizar otro para el lazo.

Ahora tenemos que leer cada línea de datos. Un botón presionado enviará la línea de datos baja, que en binario es el entero 0 (y por lo tanto, alta sería un 1). Así, el entero 'presionado' se asigna el valor binario de la línea de datos. Luego podemos probar ese valor con la declaración de if() de ' if(pressed == 0)'. El entero de 'relanzamiento' se incrementa para mantener un conteo de la cantidad de líneas de datos controles se realizan entre pulsar un botón, lo que nos permite ver si se liberan todas las llaves antes de permitir que las pulsaciones de teclado más.

En este punto entramos en una tecla que se detecten. Una pulsación de tecla sólo se debe una vez por presión del botón (si es el primero de esa pulsación) que nos da ' n ' y no 'nnnnnnnnnnnnn'. Por lo tanto, ponemos a prueba la 'wasReleased' boolean utilizando otra sentencia if().

O no enviar una pulsación de tecla a través del USB, tenemos que hacer alguna limpieza aquí. El método 'Keyboard.releaseAll()' asegura que se suspendió cualquier pulsaciones de tecla se envía al USB. El entero de 'capital' cambios de lugares en la posición más interna de la matriz de 'teclado'. Como tal, si se pulsa por segunda vez cambiar apagado, se debe restablecer la posición minúscula de 0. Por último, si se ha detectado una tecla, el programa necesita bloquear de enviar pulsaciones de tecla más hasta que todas las llaves han sido liberadas. En consecuencia, la cuenta de 'relanzamiento' debe restablecer a 0 y nuestro 'wasReleased' establecida en false.

Suponiendo que, el ciclo actual es el primero de esta tecla (así que 'wasReleased' es verdad), llegamos a registrar nuestro teclado a USB.

Caracteres especiales, bloqueo de mayúsculas, retroceso y vuelta no encajan en una matriz de caracteres y por lo tanto deben tratarse individualmente. Como tal, cada uno tiene una sentencia if() apuntando a la combinación específica de dirección y datos para esa clave. La primera línea incrementos 'capital' para el caso de cambiar de puesto la posición cuando se utiliza el bloqueo de mayúsculas. El 'otro' en la línea siguiente significa que el bloqueo de mayúsculas está Bloq y no cambio; Esto coincide con la etiqueta del botón y simplifica enormemente nuestra lógica de pulsación de tecla. Si la tecla es una letra, número o espacio, la última línea hace referencia a la actual datos, dirección número y capital estatal para seleccionar la letra apropiada de nuestro mapa de claves.

Finalmente, lo último que debemos hacer es volver a activar nuestras pulsaciones si todas las llaves han sido liberadas, así que esta parte va antes de la final '}' al final del loop().

Este simplemente comprueba que el 'relanzamiento' cuenta es mayor que el tamaño de la matriz de 'teclado' (y por lo que ha conseguido pasado la clave detectado última vez). Si es así, cambia 'wasReleased' a true, volver a activar las pulsaciones de teclado a USB.

Es el controlador del teclado completo. Simplemente conectar el Arduino al ordenador vía USB y cargar el bosquejo en su arduino. Una vez que haya reiniciado, inmediatamente debe ser capaz de escribir con teclado de goma vieja de Spectrum.

Para ver cómo tengo esto en mi espectro junto con una Raspberry Pi, incorporado Wifi y VGA soporte pago este enlace en AltoidsDrone.com.

Acknowldgements:

  • Muchas gracias a 1000bit.it por sus esquemas y guía completa del mundo vintage.

Artículos Relacionados

Hacer un adaptador USB de teclado de ThinkPad con Arduino

Hacer un adaptador USB de teclado de ThinkPad con Arduino

Entre las computadoras portátiles de clase de negocios, ThinkPad tiene los mejores teclados. Incluso con el cambio a teclado de estilo isla, yo diría que teclados ThinkPad todavía vencer a todos sus competidores laptop manos hacia abajo en el Departa
Convertir un control de N64 en un Gamepad USB utilizando un Arduino Leonardo

Convertir un control de N64 en un Gamepad USB utilizando un Arduino Leonardo

La forma más fácil de convertir un control de N64 en un Gamepad USB es comprar un N64 controlador adaptador para alrededor £15. Sin embargo también puede hacer si usted tiene un Arduino Leonardo o cualquier otro tablero de Arduino con comunicación US
Inalámbrico de teclado con Arduino

Inalámbrico de teclado con Arduino

Hola todos, en este tutorial voy a mostrar como construir un teclado inalámbrico con arduino y bluetooth que permite para escribir remotamente a nuestro Pc con sistema operativo windows.Ver videoEl programa sólo permite para enviar las letras siguien
Convertir un teclado en un caso de Raspberry Pi para alrededor $20 o menos.

Convertir un teclado en un caso de Raspberry Pi para alrededor $20 o menos.

Mi primer publicado instructable. Quería tener una cubierta para mi RPi, pero no quería gastar mucho para conseguir uno. Recuerdo haber visto uno en línea y pensó que podía hacer algo como esto: http://www.howtogeek.com/121814/turning-a-keyboard-into
Convertir un teclado Din a mini-Din sin un adaptador

Convertir un teclado Din a mini-Din sin un adaptador

qué hacer con dos teclados, un soldador y un poco tiempo que perder entre exámenes de CS. ¿Qué tal un trasplante de cable teclado?Te hace falta:Dos teclados, un Viejales con conector DIN, otros más nuevos con conector mini-DIN / conector PS2Soldadura
IRK! Teclado USB de teclas con control remoto infrarrojo

IRK! Teclado USB de teclas con control remoto infrarrojo

IRK! es un teclado USB, sin llaves, que se puede utilizar simplemente usando su control remoto infrarrojo de aprendizaje .Creé que me permite controlar mi MythTV de cine en casa PC con mi control remoto infrarrojo de aprendizaje en lugar de tener que
Mi lámpara de teclado usb

Mi lámpara de teclado usb

esta es mi versión personal de la lámpara de teclado usb.
Hackear un teclado USB

Hackear un teclado USB

Cómo hackear un teclado USB o un teclado para ello. Enviar entradas a la computadora sin un microcontrolador molesto.Paso 1: Abrir el teclado Abierto el caso. Se puede utilizar un destornillador o una cualquier ridículo busca herramienta multiusos. A
Instalación de un teclado USB en un portátil XO de OLPC, fase I

Instalación de un teclado USB en un portátil XO de OLPC, fase I

no sé ustedes, pero seguro que puedo decir del silicón de la cosa real. Aquí es cómo la jalea de la zanja y exprimir un teclado USB normal tipo de resortes de las teclas en una laptop OLPC XO. Esto es "fase I"--conseguir el teclado en la parte i
Terminar el trabajo: instalación de un teclado USB en un portátil XO de OLPC, fase II

Terminar el trabajo: instalación de un teclado USB en un portátil XO de OLPC, fase II

para un chico que ha pasado la mayor parte de su vida con los dedos conectados a la línea hogar, añadiendo este teclado USB que yo puedo tocar-realmente tipo de ha hecho una enorme diferencia en el uso de la XO. Esto es "fase II"--poner el cable
Piano teclado USB de capacitación

Piano teclado USB de capacitación

he diseñado algo que creo que sería una gran herramienta para enseñar a los alumnos de piano y desarrollo de habilidades, pero no tienes ninguna habilidad como un programador de computadoras y no se pudo crear un programa para hacerlo funcionar. Quie
Plomo-O-Lyzer, un Midi teclado rediseñado en Arduino

Plomo-O-Lyzer, un Midi teclado rediseñado en Arduino

El plomo-O-Lyzer es un ive de dispositivo querido hacer por un tiempo. Yo quería hacer un dispositivo que podría hacer plomos musical y eventualmente ser utilizado como un controlador midi. el tono se puede controlado por un sensor de ultrasonidos en
Teclado USB iluminado

Teclado USB iluminado

Hola y Bienvenidos a mi primer instructivo! Disfrutar de:]Este es un muy útil instructable si son muchas en el ordenador por la noche y no quiere hacer mucha luz en vosotros está la habitación!Paso 1: requisitos Estas cosas se necesita para iniciar e
Arduino Nano: Teclado de matriz con Visuino

Arduino Nano: Teclado de matriz con Visuino

Telclados numéricos de la matriz son algunas de las maneras más simples y más populares para entrar información del teclado en microcontroladores Arduino tipo.En este Instructable mostrará lo fácil que es conectar Teclado matriz con Arduino y program