Which model would be the best choice, to make a PC/Mac USB controller?

I am building a controller for a train simulator game, and was wondering which model would be the best choice for such use.

The controller that I envision has basically 2 linear potentiometers, 1 axis each; about 10 buttons and a couple of switches/selectors.
Pretty sure that I should avoid the Uno and older models, since they are harder to control via USB. I have lying around a couple of usb2serial adapter that I have purchased to test my sensors on my computer (they support also SPI and I2C, so they are quite handy), so I could consider to buy a Nano maybe?

I don't want to buy something too powerful, but also I don't want to buy something underpowered; I've done some research but still I don't know exactly what to get. Someone suggested me to simply get a specific HID board from the various arcade store online, but that would tie me to the firmware of the board, while with the Arduino I can basically make anything I like, and re-use it if I get bored of the controller.

shinyknight:
Pretty sure that I should avoid the Uno and older models, since they are harder to control via USB.

Huh?

From what I understand, if you connect old Arduino to a computer; you need to upload the program on the arduino chip, and then flash the bridge chip, so the computer recognize the unit as a HID device, but then you cannot communicate with the arduino main chip anymore, until you flash again the bridge chip.

I was watching a video on youtube that was mentioning that models other than the nano and Leonardo, uses 2 chip, of which one is a usb to serial converter, while the new models has one single chip that contains also the usb to serial functionality.

Sorry for the approximation; I am still learning and there is a lot to absorb here.

If you want it to act like a HID this is from:
http://arduino.cc/en/Reference/MouseKeyboard

These core libraries allow an Arduino Leonardo, Micro, or Due board to appear as a native Mouse and/or Keyboard to a connected computer.

The UNO does not work as a HID.

histo:
The UNO does not work as a HID.

Or maybe it does...
https://www.google.com/search?q=arduino%20uno%20hid

http://mitchtech.net/arduino-usb-hid-keyboard/

shinyknight:
From what I understand, if you connect old Arduino to a computer; you need to upload the program on the arduino chip, and then flash the bridge chip, so the computer recognize the unit as a HID device, but then you cannot communicate with the arduino main chip anymore, until you flash again the bridge chip.

Probably correct. I have not tried it myself.

I believe an Arduinio Micro will work...
http://arduino.cc/en/Guide/ArduinoLeonardoMicro#.Uw7-bYWqt0M

I know a Teensy will work...
https://www.pjrc.com/teensy/

I suspect a Teensy++ 2.0 will have more than enough I/O pins.

Thanks a lot for the reply!

Now I am curious to know one thing, which I can't really figure out....

I need to add multiple analog input, but someone told me to be careful because they may not be concurrent; which means that if I am , as example, accelerating with a pedal, and pressing the clutch, and turning the wheel, I am in fact using 3 different analog input concurrently, and some MC cannot handle the concurrency.

Same goes for a throttle control+HOTAS and rudder pedals....you may be using multiple analog resources at once.

Is both the Leonardo and the Teeensy, able to support concurrent analog input? I see that the teensy has a ton of analog input, but if they are not concurrently taking data from the analog source, is a bit of a let down.

The digital are also important, but it seems that there is no problem on concurrent digital signals; so if you have an arcade stick and use multiple buttons (like for some games you need to press multiple buttons, fighter games in particular), that should not be a concern.

Thanks!

Talk to some one who knows what he is talking about. While no Arduino or indeed most other processors handle anything concurrently there is only a 0.1mS delay between each read of an analogue port. From the users point of view it will feel like it is concurrent.

Grumpy_Mike:
Talk to some one who knows what he is talking about. While no Arduino or indeed most other processors handle anything concurrently there is only a 0.1mS delay between each read of an analogue port. From the users point of view it will feel like it is concurrent.

I am glad that I asked here....mostly on other forums, I feel like there is a lots of people that has no clue of what they say....or they have a ball making fun of people like me, that has no clue and believe what they say.

So if I have for example 4 analog input going on at the same time, it will be like if I am getting the signal in realtime, except for that .1ms delay? Then I am fine with it... I doubt that even my muscles or brain could perceive the difference, while in a dogfight or while playing an arcade game.

Thanks!!!

shinyknight:
So if I have for example 4 analog input going on at the same time, it will be like if I am getting the signal in realtime, except for that .1ms delay?

4 inputs * 0.1ms per reading = 0.4ms.

Then I am fine with it... I doubt that even my muscles or brain could perceive the difference...

A good rule of thumb for human reaction time is 10ms which will give you 25 samples per input; significantly more than you need. Unless you are superhuman you will never be able to react faster than that. (According to Wikipedia, the reaction time of Olympic sprinters is significantly longer... Mental chronometry - Wikipedia )

It is possible to have the analog reads performed "in the background" but that is really not necessary for what you are building.

I see, so the delay increase by 0.1ms, based on how many signals are acquired...good to know.

Probably I will be fine with 5 samples per second after all :slight_smile:

What do you mean by "in background"? Something like taking all the measurements and then return all the values together?

Something like taking all the measurements and then return all the values together?

No.
Set the A/D converter going, then do other stuff and come back later and pick up the result. As opposed to the normal analogue read method that sets off the converter and waits for it to finish and then returns the results.
There is only one A/D converter in the Arduino, the 6 inputs are all switched to the same converter.

Don't worry the normal analogue read is about 100 times faster than you will ever notice.