He utilizado un Arduino Leonardo. ¿Por qué este? Pues porque tiene una característica que viene muy bien: cuando se conecta al ordenador por usb, el ordenador ya lo ve como si fuese un teclado o un dispositivo de juegos (un joystick, vamos).

Para la programación del Arduino empecé utilizado la librería Joystick, que tiene funciones para controlar la pulsación de botones. Cuando pulsas un botón o un interruptor, llamas a una función que envía una señal de que se ha pulsado un determinado botón. Maneja hasta 32 botones, si no me equivoco, y movimientos de palanca. Pero en mi caso solo he necesitado mandar pulsaciones de botones. La pega de esta librería es que lo único que se envía al ordenador es la pulsación de un botón. Luego, en el ordenador, utilizo otro programa que “mapea” esos botones a las teclas que uno quiere. Por ejemplo, se mapea que cuando se pulse el botón 1 (al que he llamado BTN_CKPT_LIGHTS), el programa envíe al sistema operativo que se ha pulsado la tecla “L”. Y eso es lo que le llega al juego. Hay que hacer este trabajo de mapear los botones, claro. El programa que he utilizado para hacer este mapeo se llama Joystick Gremlin.

Ejemplo de programación de un botón con la librería Joystick.h

// Se lee el switch de la APU
  int apuState = digitalRead(PIN_APU);
  // Se comprueba si ha cambiado de estado con respecto al que tenía
  if (apuState != lastApuState){
    if (apuState == LOW){
      Joystick.pressButton(BTN_APU);
      delay(PRESS_TIME);
      Joystick.releaseButton(BTN_APU);
    }

    lastApuState = apuState;
  }

Luego cambié y dejé de utilizar la librería Joystick y empecé a utilizar la librería Keyboard. Es incluso más fácil que con la anterior. Con esta librería, lo que se hace es que, cuando se detecta una pulsación de un botón o un interruptor, directamente envías una pulsación de la tecla que quieras (por ejemplo la “L”). Admite también combinaciones de teclas(L-CTRL + L, por ejemplo). La pega que tiene esta librería es que si quieres cambiar la función que hace un botón, hay que modificar el código para que envíe la nueva tecla que queremos, luego recompilar y volver a subir al Arduino. Con la librería Joystick solo había que modificar esto en el programa intermedio.

He tenido que programar también unos temporizadores para los leds del tren de aterrizaje. Cuando se pulsa este interruptor, el temporizador cuenta 3 segundos, durante los cuales hay un led parpadeando en rojo (cada medio segundo), y luego ya se encienden o se apagan los tres leds del tren de aterrizaje. Estos temporizadores los he programado con la función millis() de Arduino. Hay buenos ejemplos por internet.

Las luces de los aerofrenos y de los flaps también se activan por software cuando se pulsan los interruptores correspondientes, aunque esta vez sin temporizador.

Dejaré el código en Github (mira que me gusta poco Github, pero bueno) por si alguien lo quiere.

Programación
Etiquetado en:

2 pensamientos en “Programación

  • marzo 7, 2023 a las 9:01 am
    Enlace permanente

    Tienes el enlace del Github para copiar el cogido? se puede explicar de forma mas detallada la instalacion del Joystick Gremlin? muy buen trabajo, a novatos como yo nos cuesta todavia un poco y esta ayuda extra vendría muy bien

    Responder
    • marzo 8, 2023 a las 8:05 pm
      Enlace permanente

      Ya está subido el código a GitHub. En enlace está al final del post. Si no recuerdo mal, la instalación del Joystick Gremlin era simplemente «siguiente->siguiente». Creo que no tenía nada de especial.
      Si no quieres usar el Joystick Gremlin, puedes programar el panel usando la librería Keyboard, en vez de la librería Joystick. Busca información de como programar un botón con la librería keyboard, verás que es más fácil.
      Si te estás haciendo tu propio panel, cuéntanos como es y qué tal te va. 😉
      Gracias por tu comentario.

      Responder

Responder a pgsanchez Cancelar la respuesta

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