ArduNES es una librería encargada de leer los gamepads de NES y SNES desde un Arduino y simular un Joystick virtual en un PC.
Partiendo del código de NESPad he creado una librería más fácil de utilizar y con la posibilidad de no solo leer el pad, si no simular uno en PC.
Para simular un Joystick es necesario una placa con chip ATMega32u4, como la Leonardo, puesto que estas permiten simular un disposito HID directamente.
Si la placa no soporta este modo, aún podrás usarlo para leer valores de los mandos (Evita usar los métodos initJoystick y setJoystick).
Lo primero es copiar los archivos del carpeta core, USBHID.cpp y USBAPI.h, en las librerías de arduino:
[carpeta de arduino]/hardware/arduino/cores/arduino
Después basta con crear una objeto del tipo NesController o SnesController indicando en que pines de Arduno están conectados el storbe, clock y el data y listo.
#include "NintendoPads.h"
#include "SNESController.h"
#define CLOCK 4
#define STORBE 5
#define DATA 6
SNESController snes(CLOCK, STORBE, DATA);
void setup() {
//Inicializamos el Joystick
snes.initJoystick();
}
void loop(){
//Leemos los datos del mando
snes.update();
//Actualizamos el joystick con
//los datos leídos
snes.setJoyStick();
}
Si queremos usralo solo para leer los datos del pad, podemos usar los métodos específicos para cada botón.
#include "NESController.h"
#define CLOCK 4
#define STORBE 5
#define DATA 6
#define LED_A 10
#define LED_B 11
NESController nes(CLOCK, STORBE, DATA);
void setup() {
pinMode(LED_A, OUTPUT);
pinMode(LED_B, OUTPUT);
}
void loop(){
nes.update();
if (nes.isA())
digitalWrite(LED_A, HIGH);
else
digitalWrite(LED_A, LOW);
if (nes.isB())
digitalWrite(LED_B, HIGH);
else
digitalWrite(LED_B, LOW);
}