Librería Keyboard con Arduino

Librería Keyboard con Arduino

En esta entrada vamos a crear un mando (joystick) realizado con pulsadores, que podremos utilizar posteriormente para echar partidas a juegos que utilicen teclado.

Para esto vamos a trabajar con la librería Keyboard de Arduino.

Librería Keyboard con Arduino Leonardo

Ni que decir tiene, que para que podamos seguir este tutorial de Arduino debemos saber conectar pulsadores, o haber echado un ojo a esta entrada en la que te digo cómo conectar un pulsador arcade con Arduino.

Desde aquí puedes descargar el archivo de conexión y de código de una forma muy sencilla. Para descargar basta con que pulses «Descargar con un tuit», se enviará un tuit de forma automática al mismo tiempo comenzará la descarga.

Pagar con un Tweet para descargar Tutorial librería Keyboard con Arduino Leonardo

Tutorial de Arduino

Librería Keyboard Arduino Leonardo

Qué vamos a necesitar para llevar a cabo esta entrada:

  • 1 Arduino LEONARDO. Desde aquí puedes comprar Arduino Leonardo.
  • 4 Pulsadores. Puedes conseguir los pulsadores para Arduino.
  • 1 Protoboard.
  • Algunos cables de conexión.

Arduino Leonardo

Antes de las funciones vamos a declarar algunas variables.

   // Defino la tecla asignada a cada botón.
   char salto = KEY_UP_ARROW;
   char abajo = KEY_DOWN_ARROW;
   char izquierda = KEY_LEFT_ARROW;
   char derecha = KEY_RIGHT_ARROW;

En la función void setup()

   // Inicializamos los pines.
   pinMode(2, INPUT);
   pinMode(3, INPUT);
   pinMode(4, INPUT);
   pinMode(5, INPUT);
 
  // Comienza la emulación de teclado de Arduino Leonardo.
  Keyboard.begin();

Ejemplos de Keyboard Arduino

En la función void loop()

   // Detecto si el boton esta pulsado
   if (digitalRead(2)==HIGH){
    
      // Le digo que pulse la tecla que he definido arriba.
      // Que pulse la tecla de flecha arriba KEY_UP_ARROW.
      Keyboard.press(salto);
    
      // Hago una pausa de 150 milisegundos.
      delay(150);

   }
  
   // Libero la tecla que he pulsado.
   Keyboard.release(salto);
  
   if (digitalRead(3)==HIGH){
      Keyboard.press(abajo);
      delay(150);
   }
   Keyboard.release(abajo);
  
   if (digitalRead(4)==HIGH){
      Keyboard.press(izquierda);
      delay(150);
   }
   Keyboard.release(izquierda);
  
   if (digitalRead(5)==HIGH){
      Keyboard.press(derecha);
      delay(150);
   }
   Keyboard.release(derecha);
}   

Con esto estaría nuestro tutorial de Arduino terminado, ahora cuando carguemos el código en nuestro Arduino Leonardo, nuestros botones estarán haciendo las funciones de las flechas de cursor: Arriba, abajo, izquierda y derecha.

Si para asignar la tecla quieres emplear un valor de la tabla ASCII puedes hacerlo de la siguiente manera

   // Para indicarle un valor de la tabla ASCII.
   // En este caso es la barra espaciadora.
   //Keyboard.write((char) 32);
    
   // Para indicarle un valor en hexadecimal.
   // En este caso es la barra espaciadora.
   // Keyboard.write ( (char) 0x20);

Librería Keyboard Arduino

En esta entrada no quiero profundizar más sobre el uso de esta librería y las grandes posibilidades que nos brinda. Lo dejaré para las siguientes, ya que voy a seguir investigándola a fondo.

Código Tutorial Arduino

Ahí os muestro en el vídeo el mando que me hice para jugar al Súper Mario en HTML5.

Espero que os sirva de ayuda.

Untitled.es en redes sociales

Fundador de Untitled.es ♡ developer ( ) { web; graphic; iOS; } – http://diwo.es

Resumen
Librería Keyboard con Arduino
Nombre del artículo
Librería Keyboard con Arduino
Descripción
Crea un mando (joystick) realizado con pulsadores, que podremos utilizar posteriormente para echar partidas a juegos que utilicen teclado.
Autor

14 comentarios en “Librería Keyboard con Arduino

  1. Una pregunta de alguien q no sabe nada.
    Esta placa se conecta por usb?
    Si es asi cuando esta terminada el pc lo detecta como un teclado normal?

    • Buenas Sergio,

      Antes de nada agradecer tu comentario y la visita al blog.
      Arduino Leonardo sí se conecta por USB. Cuando programas Leonardo utilizando la librería Keyboard puedes simular el pulsado de teclas exactamente como un teclado normal.

      Saludos!

  2. Bueno: esto solo puede resumirse como genialidad pura!!

    dos dudas:
    -al conectar el arduino leonardo a cualquier pc, esta la reconocera automáticamente como un teclado o debo usar un programa intermedio o instalar algo en la pc?
    -en vez de incluir los botones para enviar teclas a la pc, puedo hacer que al juntar un cable puesto en un pin PWD y otro puesto en tierra se arduino sepa que ese pin está en uso y se envíe una tecla? esta duda la hago porque me da miedo que si conecto un pin PWD y GND se quede o algo así.

    gracias.

    • Buenas Jesús,

      Gracias por pasarte por el blog. Te comento un poco lo que preguntas.

      Sobre la primera duda te indico que al conectar un Arduino Leonardo en algún PC, este lo va a detectar como si fuese un Arduino UNO, es decir, otra placa más, no estaría detectando directamente ningún teclado.

      Que Arduino Leonardo haga las funciones de teclado en tu PC vendrá dado por código y si quieres añadir funcionalidad por eventos con botones y sensores.

      Desde luego podrías decirle que escribiese determinado texto cada cierto tiempo, o que pulse determinadas teclas. De esta forma no necesitarías nada más conectado a tu Arduino para usarlo de teclado.

      También podrás indicarle que se pulsen teclas al detectar que un botón de tu circuito se ha pulsado (botón que has definido con INPUT anteriormente y estás leyendo), como es el ejemplo que tengo yo arriba en el tutorial. Quien dice botón, dice sensores, etc.

      Si no te ha quedado claro me avisas.

      Saludos!

      • Hola, gracias por responder:

        1. si configuro un Leonardo para ser usado como teclado y lo conecto a una pc que no tiene instalado el programa de Arduino Ide: voy a poder usar el arduino-teclado en esa pc o no?

        2. mi idea para enviar teclas es la siguiente: en vez de usar botones pongo un cable en un pin PWD y otro lo pongo en GND, en el arduino hay un código que cuando el pin PWD x está conectado se envíe la tecla «w»; para qué quiero esto? porque quiero copiar el funcionamiento de una placa llamada makey makey que permite interactuar con el mundo real usando el cierre de circuitos. Mi duda es que si conecto un cable en un pin PWD hasta GND ¿hay problema si hago dicha conexión? ¿No enviaré mucho voltaje/amperio a la tarjeta misma y la quemaré?

        RESUMIENDO:
        quiero saber si un ping PWD está en uso o no, para ello quiero conectar un cable PWD hasta GND y mediante código preguntar si hay conexión o no, si la hay envíar una tecla: dicha conexión tiene sentido o dañaré la placa?

        espero que mi pregunta haya quedado clara, gracias por responder.

        • Buenas de nuevo Jesús,

          A la primera pregunta te contesto que funcionará exactamente igual en cualquier equipo, independientemente que tengas instalado el IDE de Arduino o no.

          De la segunda no puedo decirte nada, no lo sé. Haz la prueba y nos cuentas por aquí a ver qué tal se dio el tema.

          Saludos!

  3. Buenas estoy siguiendo tu ejemplo para emular un joystick snes pero me da error al declarar char arriba = KEY_UP_ARROW;
    ‘KEY_UP_ARROW’ was not declared in this scope

    Gracias

  4. Buenas tardes a todos, tengo un Arduino Micro, y unos botones de máquinas arcade, y lo quiero conectar a un PC para que pulsando esos botones el PC los detecte como pulsaciones de teclado (la idea es jugar al MAME, vaya).

    Mis 2 dudas son las siguientes:

    – ¿este ejemplo que viene aquí es válido también para Arduino Micro?
    – ¿no le tengo que poner resistencias a los pines de entrada? Si es que sí, ¿qué valores de ohmios y qué configuración: pull-up o pull-down?

    Muchas gracias de antemano
    Bubu

  5. Ayuda me da error al subirlo en mi arduino uno r3 » exit status 1
    ‘KEY_UP_ARROW’ was not declared in this scope »

    Ayuda amigo

  6. Lo uso con un arduino Micro, para escribir caracteres. El problema que con la librería por defecto Keyboard.h el ASCII no es el extendido, es el americano y no hay ñ, á, é, í, ó, ú.. etc. Se puede solucionar. Alguna idea, he visto modificar la librería pero falta caracteres.
    Gracias.

  7. hola, quisiera saber si es que se pueden asignar mas teclas a las entradas… me explico… necesito si es posible asignar todas las entradas digitales a una letra…he visto tutoriales y todos solo mencionan 4 entradas… solo flechas o un maximo de 4 letras o numeros… el arduino leonardo entrega esa posibilidad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *