Made myself some DIY Dial controls

I got pretty tired ofclicking on the screen to set the heading/altitute/vs/speed on the autopilot panel, and since the Logitech/Saitek panels are not YET supported natively in FS2020, I thought, could I make my own, using a Arduino Micro (Leonardo based), and a few Rotary Encoders, with the arduino emulating either a keyboard (or better, gamepad buttons?)

The answer is YES!

It may not be pretty, and i still need to made a box for this, but I have programmed the arduino to read the rotary encoders correctly, and for each rotary encoder, map to three seperate buttons on the USB HID controller (CW turn, CCW turn, and push), so for the 5 dials in my puture it creates a 15 button gamepad, that is seen in windows as a game pad, no extra drivers needed, and then in FlightSim, map the buttons to differen funtions (increase/decresse heading, toggle altitute hold, etc). And it works pretty well.

Still need to tweak it a lot, as when i move the dials quickly some steps are not read (due to the 50ms debounce code I added). I will later probably put the code in a GitLab gist.

Future “improvements”:

  • Change encoders to i2c ones. Currently each encoder needs 3 inputs on the arduino (total 15) switching to a i2c, although a little more expensive, should reduce the number of input/output pics to 2/3, freeing up some pins to fit analog sticks, and other buttons.

  • put this in a box!

27 Likes

WOAH

THAT is SOOO COOL

I mean, I know that people who know how to do stuff like this, like yourself, it may be simple. But I’m blown away by the ingenuity to get some knobs!

I look forward for updates!

1 Like

Looking good. I do like panel mounting :wink:

The labelling is “in honour of” the old Top Gear guys (Clarkson, May and Hammond), who do have a “unique” way of labelling things they create themselves! :slight_smile:

EDIT: Its only temporary for testing, i only finished the project less than 30 minuites ago, I have a box on order!

That’s very cool, how did you interface it with MSFS?

where do i send paypal? I’m literally throwing money away trying to find apps that will do it on ipad without bugs. I can make my own box and labels. :slight_smile:

1 Like

I would love even a basic write up for this! It would be so fun to build this

1 Like

Hi
i’m preparing with teensyduino Teensy-LC
Could you indicate:

board type (arduino model)
UDB type (keyboard, joystick, flight sim model, etc.)
type of encoder used (digital or analog)

Thanks! :wink:

1 Like

Love it too! Great improvisation. Actual encoders are so much more satisfying!

sorry for the kinda self-promotion but I want to point out that there is Mobiflight, an open source project to do exactly what you’re starting out with - and much more (displays, leds, switches, motors, etc.)

3 Likes

It was an Arduino Micro (ATmega32U4 based controller). This is key as it has built in USB, and can easily set up the Joystick HID device required to get this to work properly. Used a simple KY-040 rotary controller off amazon, which were pre soldered to a board with pins and de-bounce caps, etc. I used the excellent Arduino joystick library to setup and communicate with the compater as a Joystick HID (though the standard aurduino librarys to the 32U4 already have Keyboard and mouse HID support, that can be used instead to send key presses.

hope this helps?

I am still testing the device, after all i am not a electronics engineer either (I am actually a software dev, and i learnt this by looking at a lot of articles on how to do specific stuff like dealing with the rotary controllers, etc). Also inside the unit, i am using polling instead of interrupts (due to the number of pins used) and this might be overdriving the processor, so i need to check its stable, etc before sharing the code, just in case someone burns/destroys their own arduino or worse their PC/house!

Finally as said in the original post, I REALLY want to use i2c based encoders (i2c connection wireing for components, almost similar in concept to USB, that only requires 2 wires and all components can be daisy chained). this will allow me to add more buttons easily and turn this into somethign really special! and woudl probably be easier for others to build too.

Just have a quick read up, and look at what i wrote above, for now.

1 Like

Hey thats pretty cool! I didnt know about that project, and yeah this was born out fo my own frustration of dealing with controls…AND i didnt want to have to create a driver, just wanted to make it a simple USB plug and play device, and this worked well. Though i was looking at in the future as the platform gets better to add displays, etc, but since you guys have started this project, i may actually join in :slight_smile:

I have got the arduino to present itself as a simple USB Joystick Game Pad with 15 buttons (one for each movement (rotate step left, rotate step right and press), and windows correctly detects it as a 15 button “pad”, with no axis, or hat. then its just a case of mapping the buttons in the sim to things like ALT increase, ALT decrease, ALT hold toggle, etc. No special software needed, literally plug and play!

1 Like

Anytime! It’s a great community!!!

1 Like

Oh, that’s very neat!
I built a similar “box” for X Plane, 4 rotaries & a 3-pos flap lever, but I found sending each rotary increment as an increase / decrease too slow for fast turns, so I handled the encoding in the arduino and sent fixed values to X Plane, but that required a extra interface program.

I might give the joystick interface a try, but if it’s working similar to X plane, I guess it’s time to learn simconnect for me & make a interface program!

1 Like

GREAT EFFORT!!! :clap:t2: :clap:t2: :clap:t2: :clap:t2:

I don’t know how long do we wait for saitek/logitech… So strange to see them that far away from the community. Like they have no idea about MSFS which we have been waiting for such a long time. Terrible support

It would be probably easier with one of Leo Bodnar’s boards instead of Arduino.

A new hero was born! :wink: Hahaha! I love it, good job buddy!

1 Like

I have exactly the same problem with mine, but i didnt want to go via the sim connect route just yet :slight_smile: so i am trying some hacks, however, i am very intrested in the MobiFlight open source kit above, and my get my rig to work with that instead, as that seems like its got a great community around it!

I personally wouldnt be too hard on Logitech/Saitek, as integration for those type of controls is always goign to be pretty complex, and will probably need somethign like Simconnect, etc, which had issues until the patch anyway! Look at it another way, woudl you rather they take time to get it right, or just release anything that may have major issues in the wild?

1 Like

Agree, let’s wait :slightly_smiling_face: :upside_down_face: