Sep 01

Friday Post: Arduino Keyboard Joystick

Hey all,

It’s been a long week, and I am really glad I have a long weekend to sleep in.

When the Arduino Leonardo was announced I was really excited to see it have built in USB HID support and could act as a keyboard, mouse, or joystick.  I was even more excited to find out that my year old Teensy++ (Arduino compatible board) was based on the same chipset that the Leonardo now uses, and is able to act as a keyboard as well!

This is a new feature that was introduced in the Arduino 1.0 IDE.  You can now send keyboard presses with this simple line of code: Keyboard.write(‘a’);  If I wanted the Up joystick to be the up arrow on the keyboard, I would just use: Keyboard.write(0x0E); .

.

My goal is to use my Neo Geo AES controllers as an input for MAME.  The Neo Geo pads don’t have any control boards built into the unit.  The console itself interprets each pin individually, just like an actual arcade board.  The pad uses a standard midi gameport (DA-15) connector, with each pin representing one button.

My idea is to make a Neo Geo pad to usb adapter using the Teensy++ as go-between.  The Neo Geo pins will be wired up to the digital pins on the Teensy, and the Teensy Arduino sketch will interpret each button press as a keyboard press.

I’m looking forward to working on this project.  I hope everyone has a great weekend and a restful Labor Day.

Jul 31

Raspbian on Raspberry Pi – MAME, MESS, Quake3, NeoGeo, and Cave Story Binaries

Initial impressions with Raspbian.  Everything seems to be either playable or faster than before.

  • MESS is noticably faster.
  • MAME was a LITTLE faster (it all depends on the game).
  • Gngeo (Neo Geo) was still playing at full speed.
  • Cave Story works fine as long as music is disabled.
  • Quake 3 Arena plays but sometimes crashes (as seen in the video)

Binaries are available below:

Let me know if something doesn’t work or if you need help.  Hope everyone likes these!  Thanks to those who helped put some of these binaries together!

Tutorials Available Here

Apr 03

Arduino and EL Escudo

Another fixit type post.  Every so often I repurpose my Arduino and EL Wire for a new project, and each time I always forget how to properly get the EL_Escudo library resetup.  I should probably just fork the code on GitHub with the fixes that have been posted, but who remembers to do that.

So, the EL Escudo is a cool shield for the Arduino.  SparkFun sells it.  I highly recommend them.  There is a small bug in the library code that is fixed by bobmct’s post (http://www.sparkfun.com/products/9259#comment-4eaad859757b7fd35100ba5d):

“I realize this is a rehash of what others above have said, but I got mine to work by doing the following.

Getting the El Escudo to work
Two problems:
1. Must fix a mistake in the library code: Needed to make in EL_Escudo.cpp (thanks BMK):
void EL_EscudoClass::on(char channel)
{
pinMode(channel, OUTPUT);
digitalWrite(channel, HIGH);
}
void EL_EscudoClass::off(char channel)
{
pinMode(channel, OUTPUT);
digitalWrite(channel, LOW);
}
2. They also recommend GND and HVGND are tied together. Look at photo (thanks miku) http://dl.dropbox.com/u/3551240/el-escudo.JPG . With the code change made above I also tried to see if the El Scudo would work without this jumber (between GND and HVGND), and it did work and it did work without it. I was using the EL_Blink.pde example when testing this.
The above got things to work with a handheld 3V inverter (two AA battery powered) with the button pressed 3 times (a steady AC supply, no blinking) with the output of this inverter connected to the El Escudo shield’s “EL Driver Inverter Ouput” JST jack.
The Arduino was powered from a 5VDC wall transformer (1A capacity) with the barrel jack plug connected either on the Arduino’s barrel jack connector or connected to the El Scudo’s “EL Driver Raw Voltage” JST connector.
You will need to fabricate the strange El Wire plugs to JST plugs to make all the connections. In my experience above, the polarity was not a factor because the output from the inverter is AC and so is the input to the el wire.
Hope this helps.”

My only issue was with number 1.  Fixing that caused the main library to work again.

With the upgrade to Arduino 1.0, WConstants.h will throw an error since that isn’t being used anymore.  You should be able to safely change all WConstants.h to Arduino.h