4 Teclados a un Arduino

Necesito conectar 4 teclados ps2 a tan solo 4 pins del arduino.

  • +5
  • GDN
  • pin2 (digital) - Datos
  • pin3 (digital) - Reloj

Pensando que nunca funcionarán al mismo tiempo, se he ocurrió conectarlos directamente, los cuatro tal cual... pero claro... no podia ser tan facil!!! y efectivamente no lo fue, al presionar una tecla de cualquiera de ellos, automáticamente empieza a funcionar el Reloj, y vuelve locos al resto que se lian a emitir codigos (supongo que de error) y arduino recibe pura basura (cada vez diferente)...

Necesito algún tipo de Multiplexor, barato, para implementarlo sobre una PCB y si es posible como tengo que hacer las conexiones (estoy un poco pez en este tema).

Alguien me puede orientar????

Un Saludo.

Hola,

No soy experto en el tema, pero me interesa saber si estamos hablando de mandos de playstation.

Si es asi me gustaria si no es muchas molestia saber como los pinchas en el arduino, y si hay alguna libreria especial.

En mi caso solo necesito un solo mando pero no tengo muchas idea de como conectar el mando al arduino.

Muchas gracias y perdona.

Hola,

vitervi, los teclados a los que me refiero son de tipo "ps2" (teclado tipico de ordenador, como el que tienes delante ahora mismo...)

Un Saludo,

Hola,

vitervi, los teclados a los que me refiero son de tipo "ps2" (teclado tipico de ordenador, como el que tienes delante ahora mismo...)

Un Saludo,

Hola,

vitervi, los teclados a los que me refiero son de tipo "ps2" (teclado tipico de ordenador, supongo que como el que tienes delante ahora mismo...)

Un Saludo,

Muchas gracias por contestar,

Yo estoy buscando el como conectar al arduino el mando de una playStation.

Muchas gracias

Aqui tienes información que he encontrado para conectar el mando de la Ps2...

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1203744779

Eso siii.... esta UN POCO en ingles.. jejeje...

Un Saludo y espero que te sirva....

Yo no veo muy factible un multiplexor. Un multiplexor te va a ser útil para manejar diferentes salidas, o gestionar entradas siempre que admitan una lectura asíncrona, es decir, que no importe que seas tu quien decide CUANDO leer cada entrada, pues el gobierno del multiplexor lo haces tu.
EN el caso del teclado, tu nunca vas a saber cuando va a empezar a trasnmitir un teclado concreto, con lo que no podrás "prestarle atención" justo cuando lo merece.
Lo normal con un multiplexor es que vayas rotando y cada fracción de tiempo leas una entrada distinta, pero como te digo en cualquier momento puede empezar a transmitir un PS2 y tu no estas apuntando a él.
Creo que no te quedará más remedio que usar 6 señales, 2 para cada teclado.
Y el clock tampoco lo puedes unificar pues son los teclados quienes lo generan, no el host.
Bueno, podrías hacer un OR de todos los CLK y luego el código determinar cual de los data está mandando algo, eso si, pero se te prepararía un cirio si pulsas algo a la vez en dos teclados. Así te ahorrarías 2 patas (1 CLK + 3 DATA).

Saludos

Eduardo,

Gracias por la aclaración del tema de los Multiplexores...

Un par de Premisas sobre el funcionamiento

  • Los teclados se encontrarán en diferentes habitaciones y se gestionan por una sola persona...

  • No importa de que teclado procedan las ordenes, simplemente la orden en si...

Se me ocurre una posible solución:

Como bien has dicho, si se unen los 4 Clock con un OR y los cuatro Data (se supone que funcionaria??) (siempre suponiendo que solo se utiliza un teclado)

(No se si se nota... pero ando mmuyyy escaso de pins!!!)

Otra solución sería un segundo Arduino y comunicarlos entre si.... (no lo he intentado nunca)

Un Saludo, y gracias por responder

La verdad es que nunca lo he probado, pero segun tengo entendido, toda la información de un teclado (tanto CLK como DATA) PARTEN del teclado, con lo que a priori pienso que no debería haber problema.
Pero en tu mensaje dices que puenteandolo todo te empiezan a tirar basura tras la primera pulsacion. Se supone que los 3 teclados reciben la tecla del cuarto y lo interpretan como algo que no pueden entender con lo que responden "algo".

Solo se me ocurre algun circuito que en cuanto que reciba un pulso de CLK, conecte eléctricamente el DATA correspondiente a la entrada del Arduino durante un tiempo de un par de segundos (no tardarás menos de eso en cambiar de teclado).

Igual es más fácil de implementar esto, como dices, con un segundo arduino, con lo cual casi que haces en ese segundo arduino la gestión completa de las 6 líneas y las metes por serie

Hola de nuevo,

segun tengo entendido, toda la información de un teclado (tanto CLK como DATA) PARTEN del teclado

Solo a titulo informativo:

Al igual que tu, yo tambien pensaba que los teclados eran dispositivos unidireccionales, vamos, que todos los datos los envia el propio teclado hacia el "ordenador", pero me llevé una gran sorpresa al comprobar que un teclado es capaz de responder a peticiones echas desde el "ordenador"

Un par de ejemplos

· Los leds que todos tenemos en el teclado NO son controlados por el propio teclado, sino que obedecen a comandos enviados al teclado....

· Otro ejemplo y este con mucha logica... si el teclado envia el valor de una tecla y el "ordenador" detecta un error de Checksum le pide al teclado que la repita.

Los errores que envian los teclados al puentearlos tienen mucha logica, pues el resto de teclados reciben la señal del Clock (si que la entienden) y la de Data (codigo de Tecla pulsada) la cual no estan preparados para recibir (realmente solo pueden recibir 8 o 10 comandos predefinidos, el resto lo interpretan como error o piden que se les repita).

En finn... seguire intentandolo!!! :wink:

Un Saludo,

Hola amigo Imagina.

He leído tu consulta y estoy seguro que lo que realmente necesitas es usar un I2C-TWI, con este sistema puedes conectar hasta 127 entradas creo recordar según las especificaciones de Philips en su I2Cbus.

Busca en la red documentación al respecto, además en Arduino Playground - I2C puedes encontrar algo al respecto.

Por mi parte estoy intentando manejar distintas entradas a una placa de Arduino con un limitado número de hilos (entradas) en I2C, se usan 2 (SDA, SCL más la alimentación). Creo que con eso tendrás la solución que buscas.

Espero que comentes si te sirve la idea.

Hola Velon...

Me interesaria muchisimo poder comunicar a traves de I2C (ya tengo un par de pantallas 20x4 que lo hacen) pero de momento todos los adaptadores que encuentro son de paralelo a I2C y no he visto nada de serie a I2C... ;-/ de todas formas con la información que me has dado seguiré buscando a ver que encuentro....

Al investigar un poco sobre el funcionamiento del I2C y del Ps2 me ha surgido una duda... a ver si alguien me la puede aclarar...

En el protocolo Ps2 trabajamos con:

  • Alimentación
  • DATA - (Serie)
  • CLOCK - (Serie)

y en el protocolo I2C con:

  • Alimentación
  • SDA (Serial DAta)
  • SCL (Serial CLock)

Estos protocolos solo me parecen IDENTICOS a mi?? (Supongo que el I2C será una especie de actualización sobre el Ps2)

Que pasaría si se conecta directamente el Ps2 a los puertos SDA y SCL??? (será cuestión de probar...)

Un Saludo, y gracias por la información Velon...

Hola! No hay porque, encantado de servir con mi aporte.

En cuanto a tu pregunta,

Que pasaría si se conecta directamente el Ps2 a los puertos SDA y SCL??? (será cuestión de probar...)

La verdad, no lo he probado. En principio y sólo en principio, debe haber alguna respuesta, el problema puede ser que haya comunicación inteligible.

Por otra parte, el I2Cbus es bastante anterior a la PS2, por ese motivo te digo que algo debe ocurrir al interconectarlos, las señales son similares, falta ver los tiempos de acceso y demás 'limaduras', eso te lo dejo a tu antojo, ya contarás que sale de tu experiencia.

Saludos.

una forma barata de solucionar esto seria utilizar un puñado de microcontroladores haciendo de conversor I2C-PS2. Los podrias alimentad con los mismos 5V del Arduino original y asi, de hecho, podrias poner tantos dispositivos como quisieras (hasta 127).

/d

Hola David,

Lo primero, gracias por responderme...

Estoy muy interesado en lo que comentas de los microcontroladores, pero la verdad esque estoy totalmente perdido con ese tema, supongo que te refieres a hacer algo similar a lo que estais haciendo con el tema del RS485.

Me podrias indicar por donde empezar (sobre todo tipo de microcontrolador).

Muchas gracias de antemano.

Un Saludo,