I have Sparkfun Pro Micro (Leonardo compatible board). I got it because I plan to build my own array of controls for use in flight/racing sims.

My starting point is LeoJoy, and I didn't have any trouble getting this up and running. Installed just fine, and I have a programmable HID joystick available in windows. It seems to work by modifying the RAWHID code in the default libraries to spoof being a HID joystick. However, my board was now stuck in joystick mode, with no available COM ports for uploading new sketches.

Resetting the board (by grounding the RST pin), enables the COM port, but very, very briefly. Not enough time to send new sketches.

After about an hour of trying different timing, I finally did upload an empty sketch to the board before it went into Joystick mode. So I'm good for now, but I'm a bit worried that I'm going to have to repeat this every time I want to make a change to my program.

Am I doing something completely noobish here? Is this the correct way to program a board that has been forced to act as a joystick? Is there a better way?

Perhaps there's some code I can put into my sketch that will delay the change of USB behavior for a few seconds. That way, it will allow me to recompile and submit my sketches after a reset without having to rush the timing.

1 Answer 1


From Sparkfun's page Pro Micro Hook-upGuide

When a Pro Micro is externally reset (by pulling the RST pin low), it’ll only briefly (<750ms) start the bootloader before continuing on to the sketch. If you need the bootloader to run longer, resetting twice quickly will get the Pro Micro to enter bootloader mode for eight seconds.

Hope that helps! If not there are some other procedures you might want to look into.

  • Hmm.. I thought I had read something like that, so I had tried resetting it twice quickly. But I couldn't get it to work. I don't have a switch wired to that pin, so I was using a little piece of wire, so it's entirely possible that I wasn't able to get the second "click" in quick enough. Feb 6, 2015 at 4:27
  • I am interested in learning about the "other procedures" you mentioned though. Any additional information would be great. Feb 6, 2015 at 4:28
  • Oh snap, the link didn't make it through, updated: learn.sparkfun.com/tutorials/… Feb 6, 2015 at 19:14
  • Also, I wasn't able to correlate enough of the details from your question to their documents. If you still need assistance after looking, can you elaborate on modifications to the raw HID update, if you yourself made any? Or can you shed some light on whether or not you made VID/PID changes? Feb 6, 2015 at 19:18
  • Thank you so much for your help. I didn't make any changes myself. The changes were made by the LeoJoy! program. The leonardo boards by default show up as a USB composite device consisting of a Mouse, Keyboard, and a Serial device for uploading new sketches. Installing LeoJoy appears to modify the serial device code to spoof itself as a Joystick, disabling the serial functions in the process. Don't really know enough about it to know if that's something that's entirely necessary, but your advice has got me to the point where I can compile and upload new sketches consistently, so I'm happy. Feb 7, 2015 at 4:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.