You are on page 1of 5

Teclado rotatorio con Arduino Leonardo

El proyecto consiste en utilizar el dial de un antiguo telfono descompuesto, como teclado numrico
de un computador, el telfono utilizado era unwestern electric como el de la imagen.

Aunque tena idea de lo que quera, decid navegar por la web a ver si alguien ya haba hecho lo que
yo quera, en una pgina de proyectos muy conocida encontr un proyecto tutorial donde enseaban
como sacar las seales de este dial, observ el cdigo y despus de traducir las variables al idioma
espaol le hice un par de modificaciones, ya que tengo una Arduino Leonardo y desde rato quera
hacer algn teclado nico, le incorpor la funcin keyboard al cdigo.
En este vdeo podis ver su funcionamiento.
Las conexiones son sencillas, el dial del telfono antiguo tiene dos terminales que son un interruptor
que hace contacto mecnico al girar el dial, las veces que se activa el interruptor corresponden al
nmero en el que se hizo girar, de tal forma las conexiones vienen quedando de la siguiente manera:

Podis ver el esquema realizado en Fritzing en la siguiente imagen:

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 prctico teclado numrico al
mejor estilo retro!



Aqu os dejo la galera de imgenes de este proyecto!




Cdigo de la aplicacin para Arduino Leonardo
Aqu os dejo el cdigo del programa que ha creado nuestro amigo, os recuerdo que este cdugo solo
es vlido para Arduino Leonardo ya que usa la instruccin 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.
?
1
2
3
4
5
// 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
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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 vdeo de la aplicacin!

You might also like