Skip to content

First Run

Kristian Jörg edited this page Nov 23, 2025 · 6 revisions

Prerequisites

It is assumed that the yoke is built as described in the build guide.

Step 1 - Electric verification

Caution

Please make sure motor power (24V) is disconnected!

In this step we make sure all infrared (IR) endstop sensors are working and have power. This can be done regardless of what firmware is loaded, as we only need 5V to observe the IR sensors LED status.

  • Move the yoke to all extremes of its travel and make sure that the IR LED cuts out when the "wing" or "tongue" of the x- and y-axis blocks the IR light. When the slot in the sensor is not blocked a red light can be observed, and when blocked, the light turns off.

Step 2 - Serial debug verification

Here we enable the SERIAL_DEBUG mode and make sure that IR sensors, encoders and yoke buttons and hats are working correctly. The detailed description below is taken from the Arduino IDE, but the same operation can be achieved with the VS Code environment (not shown here).

  • Open the Project with Arduino IDE and uncomment the Serial Debug line in the defines.h
  • Upload the firmware to the Arduino (see section Firmware). Please make sure motor power (24V) is disconnected before uploading! If power is on and the yoke initiates a calibration while sensors or encoders are not verified, it can behave erratically.
  • Open the Serial Monitor. In the Serial Monitor all Sensor and Button states will be displayed (image from VS Code). serial debug
  • Move the yoke handle fully left & right and make sure the corresponding IR_L and IR_R is showing a "1" at the endstop. Also make sure these are not switched.
  • Move the yoke fully forward and back. The fully inward position corresponds to IR_DN (as this is how an airplane would fly when pushing yoke in). Make sure both endstops are working and not switched.
  • When moving the yoke handle from left to right, make sure the X-axis (roll) positional value increases.
  • When moving the yoke from pushed in to pulled out, i.e pitch down to pitch up, make sure the Y-axis (pitch) positional value increases.
  • Verify that all buttons in the yoke handle are working by pushing on them (also the hat button) and moving the hat up/down/left/right. The corresponding hat up/down/left/right indications in the serial log should be in sync, this is important otherwise the hat directions will be wrong in every game. The other buttons are not important as to which button number they are connected. The buttons are bound individually in game regardless of their number.

I made the actual wiring of the hat connections to the yoke board a bit differently than Gagagu in the original project and changed in code so that wiring and decoding is in sync. Please follow my instructions in the Wiring section. If you end up with another wiring and have other hat directions, then you can either move the wiring to the Yoke PCB or modify the code in Multiplexer.cpp to comply.

Step 3 - Full initial calibration

Caution

Be careful with the next step! I am not responsible for any injuries or damage.
Please make sure motor power (24V) is disconnected before uploading!

If the above steps are verified, then comment out the SERIAL_DEBUG line and upload the firmware to the Arduino. This will put the firmware in activated mode.

  1. While keeping motor power off, insert the USB connector. The yoke will initiate a calibration but fail with a "sad" beep. This is intended at this step.

  2. Take a good grip on the yoke and hold it steady (to dampen any sudden motion if it malfunctions).

  3. Now connect 24V power to the motors while holding the yoke. Nothing should happen if everything works correctly!

  4. Now push the calibration button while still holding the yoke steady. (If a slow and steady motion is observed, you can let go of the yoke).
    The following is the expected sequence:

    1. Motor pulls yoke slowly and fully to LEFT roll position. When IR endstop is found it gives a short high pitch beep.
    2. Motor pulls yoke slowly and fully to the RIGHT roll position. When IR endstop is found it gives a short high pitch beep.
    3. Roll axis centers.
    4. Motor pulls yoke slowly and fully to the DOWN pitch position (fully in). When IR endstop is found it gives a short high pitch beep.
    5. Motor pulls yoke slowly and fully to the UP pitch position (fully out, towards you). When IR endstop is found it gives a short high pitch beep.
    6. Pitch axis centers.
    7. Calibration data is stored in EEPROM.
    8. The default Spring Effect is enabled and the yoke centers with a bit of force. Note! if something went wrong above, this step may cause the yoke to center to the wrong position, usually slamming away to an endstop and hang there. You have probably something wrong with the encoder readings. Glitch or wrong wiring? Glitch errors are hard to catch because they occur randomly and are caused by yoke movements. Soldering the connections solves this. Check the Wiring section for more information.

If a low pitch (sad) beep is heard and calibration stops, something went wrong. Enable Serial Monitor, restart the calibration process with the button and observe the logging, there should be some info on what failed hopefully. Maybe the motors ran in the wrong direction, or power was not on? Carefully investigate each step in the sequence above and see if a specific step failed.

If all went well. Congratulations! Your yoke is working! Now try to run the calibration again (push button) without hands on. It should work fine with a smooth motion.

Step 4 - Subsequent quick calibration

Every time that the yoke gets connected after a full calibration has been completed it will auto-calibrate the roll axis as the encoders give absolute angle positions and the roll movement is within one revolution. The pitch axis needs to find a reference point (endstop) since its movement is more than one revolution and we don't know where we are at start. So when plugging in the yoke it will move to the pitch down endstop (fully in), and when found return to center. This is quick!

Try pulling the USB connector out and then reconnect. Yoke pulls in and the yoke centers with a short happy beep.

Calibration misalignment

Important

If the yoke axis has been moved, for instance by it being worked on and reassembled, or the pulley was a bit loose and the roll axis is a bit rotated - then a full calibration must be run again. Just push the calibration button! This can even be done when inside a game session if something came loose.

Step 5 - Verify Joystick in Windows

The control panel settings is located under Control panel->Hardware and sound->Devices and printers Under this overview you should be able to locate "Arduino Micro", "SparkFun Pro Micro" (depending on which "board" was selected during compilation) or the name you set yourself via the instructions in the Firmware section. Right click and select Game device settings. Another simpler way is to click on the Windows icon on the left hand side in the taskbar and type joy.cpl + Enter. This dialog should appear:

picture 1

Select your game device and click on Properties. Verify that the joystick follows the yoke movements perfectly in the Test tab. Click on the buttons and verify that they light up accordingly. The hat should follow the exact movements of the physical one.

picture 2

Note

Never use the Windows settings to calibrate the joystick axis! No calibration should be done there! The full range of the axis is covered perfectly by the built-in calibration process.

Clone this wiki locally