Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Si por algo se caracteriza el Spectrum es por su gran variedad de periféricos (clásicos y modernos)

Moderador: Sir Cilve Sinclair

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por Scooter » Mié Jul 10, 2013 11:39 pm

Este hilo parte de estos dos anteriores:
viewtopic.php?f=8&t=3335
viewtopic.php?f=8&t=3350

Y tiene relación con este otro:
viewtopic.php?f=8&t=3371

Brevemente pensamos que el mejor uso para un teclado de ORIC comprado suelto, no he matado un clásico, era usarlo sin modificar. Primero como PS2, USB, haciendo un engendro para adaptarlo a un spectrum o directamente a un raspberryPI. Este hilo va de la opción USB.
No he conseguido depurar la conexión PS2 del Arduino ya que programar no es lo mío. Así que ahora que tengo un Arduino Leonardo voy a pasar a la siguiente etapa que es hacerlo USB.
No todos los Arduinos valen para esta operación, solo valen los que tienen usb "nativo" y no usan el chip fdti.

La relación de este hilo con un spectrum es que si se quiere se puede adaptar este sistema a cualquier retroteclado para usarlo en un PC, ya sea el del gomas o el de un +3.

Hago una pequeña recapacitación previa de por qué hacerlo con un Arduino y no con una controladora de teclado:
  • Se cacharrea mas; ¿por qué hacerlo fácil pudiéndolo hacer complicado? :lol: :lol:
  • Se pueden añadir funcionalidades al teclado USB como un joystick analógico para mover el ratón y cosas semejantes
  • Es mas universal, el sistema del remapeo inhabilita el uso de un teclado normal al menos en windows (que yo sepa)
  • No necesita drivers ni ningún soft, en el PC que lo enchufes irá sin mas.
  • No es mucho mas caro; el leo me ha costado 10,50€ y si bien un teclado usb puede ser gratis si tienes uno medio descompuesto, si lo compras costará unos 8€ con suerte
  • Como la prueba no es destructiva ni para el teclado ni para el arduino, puedes hacer este montaje para monear y después volver a dejar cada cosa en su sitio

¡¡¡Ya funciona todo!!! :D :D :D
Materiales:
  • Un Arduino Leonardo
  • Un teclado de Oric Atmos, creo que de Oric1 también valdrá
  • Un joytick analógico (opcional)
  • Un "puñaocable" para cablearlo todo
  • Un cable microUSB que lo conecta al PC y lo alimenta
  • Ninguna resistencia (Gracias a AntoniVillena y a leer el manual)

Esquema:
Imagen
El cable rosa es por seguridad, si se quita sencillamente deja de funcionar. Eso es así porque si algo falla es muy dificil reprogramar el arduino si el ratón y el teclado van locos
Rojo positivo, Negro negativo
Amarillo X-Y analógica del joystick, gris disparo.
Azul controla las filas
Verdes son las columnas
Las filas y columnas se pueden cambiar y luego retocar el código...
Falta un cable microusb al pc y ya está.


Código:

Código: Seleccionar todo

/*
Lectura de teclado de ORIC atmos y jostick analógico para hacer de ratón y teclado usb
 */
int indice = 0;
int MisPines[] = {3,4,5,6,7,8,9,10};  //Orden de los pines de columnas.
char Tabla[] ={0,'1','x','7','v','3','n','5',
               0,177,'q','j','f','d','t','r',
               128,'z','2','m','4','c','6','b',
               0,0,'º','k','-',39,'9',';',
               133,216,217,' ',218,215,',','.',
               130,178,']','u','p','[','i','o',
               0,'a','s','y','e','w','h','g',
               129,176,0,'8','/','=','l','0'};
char pulsadas[] = {0,0,0,0,0,0,0,0}; // Flags para saber si la tecla estaba pulsada o no
char tecla = 0; //valor por defecto de la tecla
char oldtec = 0; //valor de la tecla antigua
char tecrat=0; //La tecla del ratón no está pulsada


void setup() { // initialize the buttons' inputs:
 
  // Inicializar hid usb
  Mouse.begin();
  Keyboard.begin();
 
  digitalWrite(12,HIGH);    //Activa la resistencia interna de pullup
  digitalWrite(11,HIGH);    //Activa la resistencia interna de pullup este pun se usa para parar el teclado
  pinMode(0, OUTPUT);     
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(13,OUTPUT);
  digitalWrite(13,HIGH);   
  //Activar resistencias pullup
  for (int cont = 0; cont < 8 ; cont++){
    digitalWrite(MisPines[cont],HIGH);
  }
}

void loop() {
  // use serial input to control the mouse:
if (digitalRead(11)==LOW){
int X=(512-analogRead(0))/60;
int Y=(analogRead(1)-512)/60;
      Mouse.move(X,Y);

if (digitalRead(12)==LOW){
  if (tecrat == 0){
    Mouse.press();
    tecrat=1;
}
}
else{
   if (tecrat == 1){
    Mouse.release();
    tecrat=0;
}
}

 for (int col = 0; col<8 ; col++){
      //Selección de columna
      digitalWrite(0, (col & 4)/4);
      digitalWrite(1, (col & 2)/2);
      digitalWrite(2, (col & 1));
   for(int row = 0; row<8 ; row++){
      //Selección de Fila
      indice = col*8+row;
      tecla = Tabla[indice];
      if(digitalRead(MisPines[row])==0){ //Tecla pulsada
        if (pulsadas[col] | 1<<row ==0){ //Anteriormente no pulsada
          Keyboard.press(tecla);    //Se manda la pulsación
          pulsadas[col] = pulsadas[col] ^ 1<<row; //se indica que está pulsada  (se le da la vuelta al bit)
        }
      }
      else{    //Tecla sin pulsar
       if (pulsadas[col] | 1<<row !=0){ //Anteriormente pulsada
          Keyboard.release(tecla);    //Se manda la despulsación
          pulsadas[col] = pulsadas[col] ^ 1<<row; //se indica que está pulsada (se le da la vuelta al bit)
        }
      }
   }
 }
 delay(10);  //Pequeño retardo para quitar rebotes


}
else{
  digitalWrite(13,LOW);
}
}


Vídeo en YouTube:
http://youtu.be/T6vLYhxIWCc
Última edición por Scooter el Mié Jul 24, 2013 12:11 am, editado 10 veces en total.
Aquellos chalados en sus viejos cacharros...

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Re: Teclado de ORIC y joystick a USB

Mensaje por Scooter » Jue Jul 11, 2013 5:55 pm

Ya funciona todo bastante mal pero va. :smile:
Ahora voy a cambiar el sistema ya que envío pulsaciones enteras, lo voy a cambiar a enviar un keydown cuando se aprieta y un release cuando se suelta. De este modo irá como un teclado normal y la autorepeticion etc funcionará con los ajustes normales.
El ratón va algo mejor.

Enviado desde mi HTC Wildfire S A510e usando Tapatalk 2
Aquellos chalados en sus viejos cacharros...

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Re: Teclado de ORIC y joystick a USB

Mensaje por Scooter » Vie Jul 12, 2013 12:10 am

Pues ya funciona bastante bien, de hecho mejor de lo que esperaba.
Lo que hago es mandar un "tecla pulsada" cuando la detecto y un "tecla soltada" cuando la dejo de detectar.
Como el teclado del oric es bastante completo se puede usar un PC sin mas.
Como tengo el PC mapeado en español, el teclado va en español, con lo que no concuerda la serigrafía. Supongo que los emuladores toman el teclado como si fuese inglés, no se si toman los caracteres.
Se podría hacer un antimapeo para que el teclado funcione en inglés pero entonces si lo pinchas en un pc inglés irá raro.
También se podría hacer una combinación de teclas para cambiar el mapeado en el teclado independientemente de que se cambie o no en el SO del PC.

Lo he probado en un tablet android con USB host y van tanto el ratón como el teclado.
Probado en la raspi correctamente

Ahora solo noto un poco lento el ratón con el bucle que lleva y me parece que hay una tecla mapeada repetida.
Creo que con un poco de pulimento puede estar bien. voy a ver si lo documento.
Aquellos chalados en sus viejos cacharros...

Avatar de Usuario
fermars
Freddy Hardest
Mensajes: 555
Registrado: Mié Abr 25, 2012 7:09 am
Ubicación: Madrid
Contactar:

Re: Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por fermars » Vie Jul 12, 2013 12:10 pm

Eso eso!! documenta, por lo que dices el invento tiene una pinta excelente.
Por supuesto, ¡enhorabuena!
Fernando

Avatar de Usuario
jevilon
Manic Miner
Mensajes: 288
Registrado: Mié Jul 23, 2008 1:15 pm
Ubicación: La Rioja

Re: Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por jevilon » Vie Jul 12, 2013 12:27 pm

Toma ya... A ver si con esto consigo hacerlo en el Spectrum.. Aunque me llama más la idea de hacerlo usb

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Re: Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por Scooter » Vie Jul 12, 2013 1:58 pm

Pues esta mañana he estado cometiendo una tropelía a base de dremel, taladro, nural21 ...


Enviado desde mi HTC Wildfire S A510e usando Tapatalk 2
Aquellos chalados en sus viejos cacharros...

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Re: Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por Scooter » Vie Jul 12, 2013 4:14 pm

Añadido el esquema, con la información del primer post debería de ser suficiente para montarlo.

Tropelía

Los trastos de matar:
Imagen

El instrumental Fino:
Imagen

La víctima ya se lo huele:
Imagen

Replanteo a ojímetro. De medir nada ¿eh? ¡que midiendo le puede salir bien a cualquiera!
Imagen

Taladrando
Imagen
Imagen

Taladrado
Imagen
Imagen

Repasos varios para dar forma esférica por la parte interior
Imagen
Imagen
Imagen

Ahora si que si, espero que ya le haya hecho efecto la anestesia
Imagen
Imagen

Ahora hay mas "güeco"
Imagen

Vista por la parte externa
Imagen
Imagen

El nural, lleva guardado una década, ya veremos si pega o no
Imagen
Imagen

Pues si, parece que pega, ahora a esperar a que fragüe. Lleva tres tornillos porque el cuarto roza :evil:
Imagen
Imagen
Imagen

Cuando se endurezca el nural, remataré la faena
Aquellos chalados en sus viejos cacharros...

Avatar de Usuario
stratotrasto
Sabreman
Mensajes: 484
Registrado: Lun Ago 06, 2012 10:05 am

Re: Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por stratotrasto » Vie Jul 12, 2013 10:31 pm

Una pregunta? Ese joystick dónde se puede pillar?

Un saludo y fantástico trabajo.

Un saludo.

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Re: Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por Scooter » Vie Jul 12, 2013 11:16 pm

En www.dx.com por unos 4 o 5 laurios, si te interesa busco el enlace. Va mejor de lo que pensaba; 0V a un extremo y 5 al otro, vuelve al centro con un muelle, si lo aprietas tiene un pulsador para hcer click.


Enviado desde mi bq Maxwell Plus usando Tapatalk 4 Beta
Aquellos chalados en sus viejos cacharros...

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Re: Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por Scooter » Dom Jul 14, 2013 11:04 pm

Actualizado el soft con unos pocos ajustes: Algunos scancodes mal puestos y el ratón ahora va un tanto mas rápido.
En breve actualizaré fotos y videos etc.

Mañana toca marquetería.
Aquellos chalados en sus viejos cacharros...

Avatar de Usuario
fermars
Freddy Hardest
Mensajes: 555
Registrado: Mié Abr 25, 2012 7:09 am
Ubicación: Madrid
Contactar:

Re: Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por fermars » Mar Jul 16, 2013 9:51 am

Pues enhorabuena por el invento, la verdad es que te está quedando de miedo.

Como la prueba no es destructiva ni para el teclado ni para el arduino, puedes hacer este montaje para monear y después volver a dejar cada cosa en su sitio

Bueno bueno, no destructiva...cuando ha visto el teclado esas herramientas de matar se ha puesto a temblar como dices. Lo que me he perdido (no se donde) es cómo vas a suplir las pistas que has cortado ¿cableando?¿volverás a montar el trozo de placa?
Y una cosa más ¿al final este teclado lo usarás para PC o para meterlo a otro engendro de 8bit?

Mira que te ha dao juego el teclado del Oric y yo que pensé que nadie estaría interesado :D.
Saludos.
Fernando

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Re: Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por Scooter » Mar Jul 16, 2013 10:05 am

Es destructiva si le pones el joystick pero si no se lo pones no lo perjudicas en nada.
Las tres pistas ya están reparadas con tres trozos de cable, esa esquina del CI la he quitado para que quepa el potenciometro, es un poco salvaje pero el teclado sigue funcionando igual.
El teclado es un "combo" usb hid teclado +ratón, ahora mismo funciona en cualquier cosa que lo admita; cualquier PC-MAC-LINUX y cualquier android con usb hid.
Ahora que pienso tengo que ponerle unos humpers para que solo haga de teclado o solo de ratón, tal cual está ahora si alguien lo monta y no pone los potenciometros del joystick centrados el puntero del ratón se le moverá solo hasta llegar a una esquina.
En breve actualizo el código con un par de mejoras.

Aparte la marquetería que está en proceso mental.
Aquellos chalados en sus viejos cacharros...

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Re: Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por Scooter » Mar Jul 16, 2013 4:12 pm

Código actualizado, ahora se puede hacer drag¬drop con el joystick y doble click etc. Antes se mandaba un click si estaba pulsado, ahora se manda un "pulsar" al pulsar y un "soltar" al soltar con lo que se puede mantener pulsado etc etc..

fermars escribió: Lo que me he perdido (no se donde) es cómo vas a suplir las pistas que has cortado ¿cableando?¿volverás a montar el trozo de placa?

No es que te has perdido, es que la foto no estaba; procuré tocarlo lo menos posible mientras el nural tiraba.
No lo había dicho pero hice unos cortes con el cutter en varios sentidos sobre el plástico para que la pasta tenga "a donde agarrarse".
Así es como queda la esquina del teclado, si no se pone el joystick no hay que cortar la placa ni hay que hacer estos inventos.
Imagen
Aquellos chalados en sus viejos cacharros...

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Re: Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por Scooter » Sab Jul 20, 2013 3:11 pm

Ya tengo carcasa posterior para mi "no-Oric"

Bueno, tras unos días de serrar y limar ya tengo la carcasa inferior de mi NoOric. Ahora me falta lijarla un poco, hacer las ranuras de los puertos de expansión y pintarla de color rojo-oric.

Mi impresora 3D:
Imagen
Imagen

Vista inferior antes de pegar la tapa:
Imagen
Imagen

La carcasa sin el teclado:
Imagen
Imagen

La tapa inferior:
Imagen
Imagen
Imagen

Aspecto Final
Imagen
Imagen
Imagen
Imagen
Aquellos chalados en sus viejos cacharros...

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Re: Teclado de ORIC y joystick a USB ¡¡Conseguido!!

Mensaje por Scooter » Mié Jul 24, 2013 12:12 am

Aquellos chalados en sus viejos cacharros...

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 12 invitados