logo

Teclado, Rotatorio, Arduino, Leonardo, Keyboard, Keyboard.print, Tutorial, Proyecto, Español, Ejemplo, Principiantes, Retro, Teléfono, DIY, Hack,


Hola amigos!

Hoy os traemos un proyecto súper interesante que nos ha enviado nuestro amigo Luis Yanes desde Colombia.

Os dejo con el artículo que ha preparado para nuestro gozo y disfrute! Gracias Luis!
 
 
 
 
 
 
 
 
 

Teclado rotatorio con Arduino Leonardo

El proyecto consiste en utilizar el dial de un antiguo teléfono descompuesto, como teclado numérico de un computador, el teléfono utilizado era un western electric como el de la imagen.

Teclado, Rotatorio, Arduino, Leonardo, Keyboard, Keyboard.print, Tutorial, Proyecto, Español, Ejemplo, Principiantes, Retro, Teléfono, DIY, Hack,

Aunque tenía idea de lo que quería, decidí navegar por la web a ver si alguien ya había hecho lo que yo quería, en una página de proyectos muy conocida encontré un proyecto tutorial donde enseñaban como sacar las señales de este dial, observé el código y después de traducir las variables al idioma español le hice un par de modificaciones, ya que tengo una Arduino Leonardo y desde rato quería hacer algún teclado único, le incorporé la función keyboard al código.

En este vídeo podéis ver su funcionamiento.

Las conexiones son sencillas, el dial del teléfono antiguo tiene dos terminales que son un interruptor que hace contacto mecánico al girar el dial, las veces que se activa el interruptor corresponden al número en el que se hizo girar, de tal forma las conexiones vienen quedando de la siguiente manera:

Teclado, Rotatorio, Arduino, Leonardo, Keyboard, Keyboard.print, Tutorial, Proyecto, Español, Ejemplo, Principiantes, Retro, Teléfono, DIY, Hack,

Podéis ver el esquema realizado en Fritzing en la siguiente imagen:

Teclado, Rotatorio, Arduino, Leonardo, Keyboard, Keyboard.print, Tutorial, Proyecto, Español, Ejemplo, Principiantes, Retro, Teléfono, DIY, Hack,

Este es un proyecto perfecto para iniciarse, es muy interesante porque tan solo es conectar Arduino Leonardo al PC con el programa ya cargado y funcionará como un práctico teclado numérico al mejor estilo retro!



Aquí os dejo la galería de imágenes de este proyecto!

Código de la aplicación para Arduino Leonardo

Aquí os dejo el código del programa que ha creado nuestro amigo, os recuerdo que este códugo solo es válido para Arduino Leonardo ya que usa la instrucción keyboard.print, que hará que nuestro PC piense que tenemos un teclado conectado a nuestro USB, en lugar de un Arduino, y podremos escribir con él, como si de un teclado se tratara.

// El siguiente codigo lee los pulsos que envia el teclado rotativo de un viejo telefono
// y los envia a traves de la funcion keyboard disponible para la arduino leonardo
// el codigo es una modificacion del codigo hallado en la pagina instructables 
// http://www.instructables.com/id/Interface-a-rotary-phone-dial-to-an-Arduino/step4/Develop-the-code/

int imprimir = 0;                      //variable para amndar a imprimir al keyboard
int contador;                          //contador de veces de giro
int pin = 4;                           
int ultimoestado = LOW;                //ultimo estado
int estado = LOW;
long tiempodelultimocambio = 0;       //variable para almacenar el tiempo del ultimo cambio
int findelgiro = 100;                 //tiempo en ms del fin del giro
int retardo = 10;

void setup(){
     Keyboard.begin();
     pinMode(pin, INPUT);
}

void loop(){
    int lectura = digitalRead(pin);
    if ((millis() - tiempodelultimocambio) > findelgiro) {                 // el dial no ha comenzado a girar, o justamente ha finalizado el dial
             if (imprimir) {                                               // si ha finalizado es necesario enviar este numero con la funcion keyboard.print
                                                                           // y reseteamos el contador. Se saca el modulo del contador con 10 porque el cero genera 10 pulsos
                Keyboard.print(contador % 10,DEC); 
                imprimir = 0;
                contador = 0;
             }
     } 
     if (lectura != ultimoestado) {
            tiempodelultimocambio = millis();
     }
     if ((millis() - tiempodelultimocambio) > retardo) {                   
            if (lectura != estado) {                                       // esto significa que el suiche ha cambiado de cerrado a abierto o viceversa.
                 estado = lectura;
                 if (estado == HIGH) {                                     // incrementa el conteo de los pulsos si estos van ha alto
                     contador++; 
                     imprimir = 1;                                         // es necesario para que imprima el numero una vez el dial ha terminado de girar
                 } 
            }
    }
    ultimoestado = lectura;
}

Por último, os dejo otro vídeo de la aplicación!

Os animo a todos a realizar vuestros propios proyectos y enviárnoslos! Demostrarnos de que sois capaces! Hasta pronto!!

Pablo Murillo. Técnico electrónico apasionado por la tecnología y el mundo de la impresión 3D. Comprometido en difundir el movimiento maker en cualquiera de sus vertientes. Fundador de Arduteka.com Colaborador en Arduino.cc
  1. Zetainex Responder

    Se me está ocurriendo que, de la misma forma que se escriben números, se podría traducir (con bastante código) las pulsaciones para escribir letras en vez de sólo números, dado que los agujeros de los números también tienen letras, podría ser un teclado portatil un poco lento, pero desde luego bastante curioso de ver.

    La idea es la siguiente:

    Si quieres escribir la “A” pulsas el 2 una vez, si quieres escribir la “B” pulsas dos veces seguidas el 2, si quieres escribir una “A” y una “B”, que podría confundirse con una “C” si se pulsara tres veces el 2 se puede arreglar si pulsas una vez el 2, el 1 (que no tiene letras y podría utilizarse como terminador) y otras dos veces el 2.
    Si se quiere escribir un espacio, una coma o un punto utilizas el 0.

    ¿A alguien se le ocurre cómo se podría escribir esto en código? Si alguien se anima a modificar el código de Luis Yanes prometo conseguir un teléfono antiguo que poder despedazar.

  2. Luis Yanes Responder

    Zetainex muy buena idea le voy a hacer una modificacion al codigo a ver si lo logro conseguir!!

Déjanos un comentario!

*

captcha *