G-Force CU36B6A User manual

32 Bit Joystick Interface CU36B6A (36 buttons + 6 Axes)
Full programmable USB joystick interface board with pin header and IDC 16P connectors to connect buttons,
potentiometers, sensors, rotary encoders and switches to a PC.
Inputs
6 analog inputs with adjustable 10-14bit (4096 steps) resolution each
32 button + 4 button POW (36 total)
max. 6 rotary encoder inputs / with 24 button
4 button / POW 8-way "point-of-view" hat switch input
Dimensions
Length 86mm
Width 50mm
Height 12,6mm
Recommended Wire Size 24AWG to 20AWG
Mounting Screw Hole Size M2.5
Connection to PC
The PCB has a standard USB B type connector for connection to PC. No drivers are required. Plug it in and use
straight away.
Connection
Connectors 2x 6-pin, 2x 3-pin, 1x 2-pin, 1x PH2 2-pin are included with each controller to solder your wires to
(to save soldering directly to the pins on the PCB) or connect using 3-pin and 2-pin cables. Pin header has
standard 0.1" (2.54mm) pitch. You can also use the IDC 16P connector to connect buttons with flat AWG wire.
36 digital inputs for buttons and switches via wiring matrix
We recommend ready-made matrix add-on board for easy matrix wiring.
Connects to six ROWS and six COLUMNS pins on the controller. Looking at the diagram below you can see
connecting two wires from a simple push button to Row 1 and Column 1 would activate S1 (Button 1), Row 1
and Column 2 activates S2, Row 2 Column 1 activates S7 etc. There is no need for any ground pins to be
connected however diodes are required if there will be 3 or more contacts activated simultaneously. Most
diodes can be used - 1N4148 or 1N4004 are good ones and can be found at most local electronics supply
stores. First 32 buttons are standard buttons. Last 4 contacts make up 8-direction POW point-of-view hat
(coolie) switch, but can be connected as a standart 4 buttons. Then we can use 36 functional joystick buttons.

Support for up to 6 rotary encoders
A pair of digital inputs can be connected to a rotary encoder. All main types supported. Maximum can be
connected 6 encoders (to 12 buttons input). In the MMJoy2 software you can set all the encoder parameters.
Always use negative number for the first input, ie. 1-2, 3-4 etc. Wiring encoders into the button matrix
example:

6 analog or digital inputs with adjustable from 10 to 14bit resolution and independent wiring
You must only connect potentiometers with the USB cable unplugged from the device.
4096 steps of resolution. Even 1/4 of this range is still 1024 steps!
To support true 10 to 14-bit performance each analog inputs has independent set of +5v and GND terminals,
oversampling and sophisticated signal filtering. Simple potentiometer wiring for axe 1. example:
8-direction POV hat switch
Connect a hat switch or even make your own by connecting any four buttons of your choice. Diagonal
directions are made by pressing two directions together ie, UP and LEFT = NW. (the hatswitch inputs are only
accessible if using the wiring matrix. Diodes should be used if connecting other buttons in the matrix.)
UP - COLUMN 3
LEFT - COLUMN 6
DOWN - COLUMN 5
RIGHT - COLUMN 4
PUSH - Any other button input (only columns 1 or 2 if no diodes are used)
COM.(Ground) - ROW 6
Potentiometers 1kOhm .... 100kOhm / Linear
We recommend 10kOhm for normal use.

Using MMJoy2 Software for programming CU36B6A.
1/ Connect interface CU36B6A to PC USB port.
2/ Run software MMJoy2 and connect CU36B6A interface.
3/ Load sets from device and Save sets to file as a file backup.
4/ Change some parameters (read manual) and Save sets to device, then Save sets to file with new name.
Be careful not to overwrite the backup file.
How to use MMJoy2 read software manual.
For more info about MMJoy2 visit website: https://github.com/MMjoy
Axis options
Axes are setup on the first screen of MMJoysetup program: Lets explore the options as they are listed in the
software.
Mandatory stuff
Source
In Source dropdown you have to select the type of axis input. Virtual - in this mode you will emulate axis
changes by buttons. More on that later. IntSensor - a usual analogue source, like potentiometer. MCP3201,
MCP3201, MCP3204s/MCP3208s, MCP3204d/MCP3208d, KMZ60+MCP3202, KMZ60+MCP3208s,
TLE5010/5011, S/C-TLE5010/5011 - if you have a digital signal source from a chip in this list, choose your
option.
MCU port –IMPORTANT!
For analogue source you have to define the pin, to which you have connected the signal pin (usually the center
one) of the potentiometer. For digital source, you have to define the connection of CS pin.
Axe 1
Axe 2
Axe 3
Axe 4
Axe 5
Axe 6
F4
F5
F6
F7
B5
B6

Channel
In case you have multi-channel digital sensor, in this field you will have to choose the number of the pin you
have connected your source to.
Value raw
If your axis was defined correctly, after you write the setting to device, in this field you will see the raw values
received from the sensor
Values processed
Given that you see raw values already, this field will show the values applying the filter (will be mentioned
later)
Assignment
In this field you will have to assign your hardware axis to the HID joystick axis for Windows. Please note that
without assignment you will not be able to use the axis at all, and setup program will return you an error.
Precision
Here you define the precision of the sensor you use. If you don't know what it is, here is the rule of thumb: If
you have Hall sensor, MagRez or just potentiometer connected directly to the board - set it to 10. If you
connect these inputs using MCP3208 chip, set it to 12.
Filter
If your axis is "noisy" and you want to make its signal more consistent, you can select a value for filtering its
fluctuations. You want to keep this as low as possible.
Auto-calibration and calibration min/center/max fields
In this dropdown you can select calibration options for your axis. It can be set to Auto, and the software will
adjust the axis range automatically after you move it to its full range. Another option is set it to manual, and
define top, center and bottom values in the following fields. The options with center (w center) will be helpful
if you have the axis with asymmetrical movement - e.g. pitch axis will be shorter for pitch down and longer for
pitch up. When you choose this option the software will either calculate the center position of your stick
automatically (auto w center) or read the calibration center value (saved w center).
Optional stuff
Under this section I situated more advanced parameters and those that will allow you do correct the hardware
faults.
Invertion
Yup, this inverts the axis. Welcome to Australia!
Decrease, increase, return to center and Step of change
This options are available if you have selected Virtual source. In the first three fields you can select the
hardware button that will change the Virtual axis value in accordance with its function. The step of change
defines increments of axis increase or decrease
Special Functions
In this dropdown you are to select the profile of the axis, if you want to. The profiles are defined on the second
screen, "Joystick axes special functions".
DZ low, center, high and dynamical
These fields will define the range in which raw values change will not affect the filtered value at all. The
dynamical deadzone is a nice one: the software listens to axis readings 1000 times per second or so. If the last
3 readings were the same (which means you stopped moving the handle) it applies the deadzone value to it.
This is useful when you have shimmering axis input.

Link errors
Here you will see if the software has lost your sensor. Useful for debugging.
Joystick axes (Spec. Functions)
On this screen you are able to define custom response curve for each function if you are into that kinky stuff.
Button options
In this section we will review galaxy of button assignment options.
Choose your source
Remeber - there are two options for buttons. You can either make a button matrix or a shift register board.
You can define your input for buttons in the following sections: For button matrix, you have to define the pins
to which rows and columns are connected.
Button matrix source for CU36B6A Interface. - IMPORTANT
ROWS
B1
B2
B3
D1
D2
D3
COLUMNS
D0
D4
C6
D7
E6
B4
IMPORTANT! WHEN YOU CHANGE THIS VALUES, THE BUTTON MATRIX WILL NOT WORK PROPERLY!

For shift registers you will define its type, the number of chips, CS signal pin, and MISO pin (the pin which is
connected to Data leg on shift register).
Check hardware buttons responce
If you have done your job right and saved sets to device, the hardware buttons section will respond to your
buttons presses by lighting up in red: This will help you later in mapping hardware buttons to virtual buttons
and functions.
Timers and shifts
This menus will allow you to set up to 3 types of delay for your switches and encoders, and define the
modificators (shifts) to bind several virtual buttons to 1 hardware button and a shift. Pay attention, class, more
on that later!
Button mapping
Now its time to assign your hardware buttons to the buttons on your virtual joystick in Windows.
Virtual buttons and keyboard/mouse emulation

Modes
For different type of inputs you can employ diffent modes:
Switch mode means the virtual button will be pressed when 1) the button is pressed and 2) the button is
released.
Switch on mode activates virtual button only when the real button is pressed
Switch off mode, on the contrary, activates virtual button only when the real button is released
Soft switch mode will act as software button fixation: when you pressed the button for the first time the
virtual button will be activated, when you press it the second time - virtual button is deactivated.
Encoder mode is activated automatically for encoders set in the designated section. In this mode the
activation of encoder positions is stored, and you can spin the encoder with a drill - and the board will store
them and feed into the PC gradually, according to the timers set (see below)
Shifts
After defining shifts in the designated section of the MMjoySetup, you can assign different virtual buttons to
the same hardware button+shift combination
Timers
You can set the duration of timers in the designated section of the configurator. Timer on sets the time for
which your virtual button will be pressed. Timer off sets the time for the period when you will not be able to
activate the virtual button again. Consider using an encoder for example. You can spin the handle really fast,
and the PC will not be able to register the button presses properly. Setting the timers for encoder will let the
PC receive stable length of virtual button presses. The other case it may be useful for is a bad shimmering
button - when holding it will give you multiple unwanted virtual button presses. This may be avoided by
employing timers.
Advanced functions: Axis to buttons, Hats and Encoders
These menus will allow you to enable functions like axis increments (e.g. from 100% to 0% in one click), and
recognition of your buttons as hats or encoders.
Popular Video Game Controllers manuals by other brands

Muller Elektronik
Muller Elektronik Joystick III Installation and operating instructions

Biogenik
Biogenik Wii U Pro user manual

Stealth Products
Stealth Products IDM-ARLITE-9 owner's manual

Leo Bodnar Electronics
Leo Bodnar Electronics SimSteering 2 user manual

Mad Catz
Mad Catz Cyborg F.L.Y. 9 manual

Logitech
Logitech Wireless Guitar Controller quick start guide