Clutch
Both single clutch and dual clutch are supported. Dual clutch setup has a lot more features. The hallmark feature of a dual clutch system is having quick access to the bite point, a predetermined percentage of clutch application that is ideal for a standing start.
The bite point can be adjusted in many ways:
- A biteButton() alone 
- A biteButton() with a supported rotary switch or encoder function 
- Using a bitePot() 
- Using presets. 
- ++ 
Clutches use the joystick X axis. The bite point is shown by the RY axis.
DDC also allows the use of EEPROM to store clutch calibrations - and thus allowing you to quickly calibrate your clutches without having to map out the analog signals using checkValue(). For that, use the dualClutchCal() function instead of dualClutch().
If you're using a calibration based clutch function, make sure to have a button for clutchCalibrate().
There are also filtered versions of all clutch functions.
singleClutch() or singleClutchCal()
A simple single-paddle clutch.
Can be used to set the bite point together with a biteButton()
Can launch when coupled with launchButton()
void singleClutch(int analogChannel, int releasedValue, int fullyPressedValue)
Type in the channel this clutch is running on, and the values you read out from serial monitor.
Example:
void singleClutch(3, 105, 799);
void singleClutchCal(3);
- biteButton() or bitePot() to set bite point if desired 
- launchButton() to launch, if desired 
- clutchCalibration() button if you're using dualClutchCal() 
dualClutch() or dualClutchCal()
A dual paddle clutch system. Has 4 modes:
0: Static - The slave paddle only reaches bite point, the master paddle goes to 100%
1: Dynamic low - Either paddle alone only reaches bite point, press both together to reach 100%
2: Dynamic high - Either paddle alone reaches 100%. Press both and release one to get to bite point.
3: Brake/throttle - Using the paddles as brake and throttle. Output now changes from joystick X axis to brake/throttle axis.
Changing modes are done by holding the modButton and pressing either paddle all the way in and releasing. If this doesnt work, it is a good indication that your clutch doesnt reach a stable 100% or rest at a stable 0% - which means you should adjust your values.
The function defaults to bits 13 and 14 in the rotary field. Will be returned by SimHub as property [DahlDesign.DDCclutchMode].
With dualClutchCal() you'll need to set up a clutchCalibrate() button.
void dualClutch(int masterAnalogChannel, int masterReleasedValue, int masterFullyPressedValue, int slaveAnalogChannel, int slaveReleasedValue, int slaveFullyPressedValue, bool throttleMaster)
Type in analog channels used and the values you read out from serial monitor. This for both switches, decide which is master and slave. Lastly, throttleMaster makes master paddle throttle and slave paddle brake in mode 3. if set to true. Opposite if set to false. 
Example:
void dualClutch(1, 105, 799, 2, 436, 873, true);
void dualClutchCal(1, 2, true);
- modButton() to change modes 
- biteButton() or bitePot() to change the pite point. 
- launchButton() if you want 1-handed launches. 
- clutchCalibration() button if you're using dualClutchCal() 
clutchCalibrate()
A regular pushbutton that also serves as a trigger for clutch calibration sequence:
- Hold the button for 4 seconds, release. 
- Completely press and release your clutch(es). 
- Press button once. 
Now your clutches are fresh and calibrated. The calibration adds a small deadzone on top and bottom. If you want a bigger deadzone, sligthly hold the clutch(es) while doing the 4 second push, and you can also add a deadzone at the end of the travel by not completely pressing the clutch(es) during calibration.
The state of the calibration mode is found as SimHub property [DahlDesign.R8].
void clutchCalibration(int row, int column)
Example for a pushbutton on row 1 column 3:
void clutchCalibrate(1,3);
- 1 button number 
- Something to calibrate, allthough not a must. Firmware will work still. 
Last updated