Pilotage | Matériel | Analyses

Interfaces pour les pédales

Vous trouverez ici toutes les solutions pour brancher les pédales SRT. Deux philosophies : relier les pédales à votre volant, ou relier directement les pédales à l’ordinateur.

Sommaire

  1. Logitech (G27, G29, G920)
  2. Simucube 1
  3. Simucube 2
  4. Arduino
  5. Leobodnar
  6. Thrustmaster

La grande majorité des pédaliers utilisent des potentiomètres. Comme l’accélérateur est basé sur un potentiomètre, et que le capteur de pression hydraulique se comporte aussi comme un potentiomètre, on peut brancher ce pédalier sur la plupart des bases volants (logitech, Simucube, Thrusmaster…).

Sinon on peut le brancher sur une carte Leobodnar ou Arduino qui est ensuite branchée sur le PC via un câble USB.

1) Logitech (G27, G29, G920…)

Vous pouvez brancher le pédalier SRT sur un volant G27 ou G29. Pour cela, utilisez un connecteur VGA male (sur Amazon, ou Aliexpress) avec les pin suivants :

1 – Masse (0v)

2 – Accélérateur

3 – Frein

4 – Embrayage

5 –

6 – VCC (+5v)

7 –

8 –

9 – VCC (+5v)

b) Simucube

2) Simucube 1

On peut brancher un pédalier sur le port X11-upper. Voir le détail sur la doc Simucube.

Le pin 1 est celui le plus à droite. Il faut utiliser un câble RJ45 (8P8C)

1 – Frein

2 – Accélérateur

3 –

4 – VCC ( +3,3V)

5 – Embrayage

6 –

7 –

8 – Masse (0V)

X11-upper

Pin 1 is the right-most.

Use with a RJ45 (8P8C)

3) Simucube 2

Il y a un port « SC accessory port » sur lequel il y a des pins pour brancher un pédalier, c’est du vga db15 femelle.

Voir la documentation disponible ici. On peut utiliser ce type de connecteur mâle. Les pins qui vous intéressent :

2 – Masse (0V)

6 – Accélérateur

7 – Embrayage

8 – VCC (5V)

13 – Frein

15 – Masse (0V)

4) Arduino

Si vous ne voulez pas brancher le pédalier sur votre volant, utiliser une carte arduino est la solution la moins onéreuse. Le code suivant permet de gérer de une à trois pédales. Il ne fonctionne qu’avec les cartes Arduino Leonardo et Micro. La librairie joystick.h est disponible en téléchargement ici.

// V1.0 : ajout du mode verbose
// V1.1 : correction
// V1.2 : display min and max read when verbose_mode is active.
// V1.3 : handbrake analog and digital mode added
// V1.4 : code fix + fast debug : no need to disable DEBUG to operate at full speed.

// comment either out to disable || Mettre en commentaire pour désactiver

#define USE_ACCEL
#define USE_BRAKE
#define USE_CLUTCH
//#define USE_ANALOG_HANDBRAKE
//#define USE_DIGITAL_HANDRAKE
#define DEBUG   //allow to tune min and max

#define AcceleratorPin 0
#define BrakePin       1
#define ClutchPin      2
#define HandbrakePin   3

int minAccelerator = 210;
int maxAccelerator = 595;
int minBrake = 130 ;
int maxBrake = 800;
int minClutch = 130;
int maxClutch = 250;
int minHandbrake = 100;
int maxHandbrake = 300;
int digitalHandbrakeSwitch = 200;

int lastAcceleratorState ;
int lastBrakeState;
int lastClutchState;
int lastHandbrakeState;
int currentAcceleratorState;
int currentBrakeState;
int currentClutchState;
int currentHandbrakeState;

int minAcceleratorRead = 1023;
int maxAcceleratorRead = 0;
int minBrakeRead = 1023 ;
int maxBrakeRead = 0;
int minClutchRead = 1023;
int maxClutchRead = 0;
int minHandbrakeRead = 1023;
int maxHandbrakeRead = 0;

bool sendDebug = false;
int unsigned long lastDebug = 0;
int DebugRefreshRate = 250;

#include "Joystick.h"
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,
                   JOYSTICK_TYPE_MULTI_AXIS, 4, 0,
                   true, true, false,  true, false, false,         // pour activé la fonction RxAxis
                   false, false, true, true, false);

void setup() {
#ifdef DEBUG
  Serial.begin(9600);
  Serial.println("DEBUG mode activated");
#endif
  Joystick.setRxAxisRange(minAccelerator, maxAccelerator);
  Joystick.setBrakeRange(minBrake, maxBrake);
  Joystick.setXAxisRange(minClutch, maxClutch);
  Joystick.setYAxisRange(minHandbrake, maxHandbrake);
  Joystick.begin();
  lastAcceleratorState = analogRead(AcceleratorPin);
  lastBrakeState = analogRead(BrakePin);
  lastClutchState = analogRead(ClutchPin);
  lastHandbrakeState = analogRead(HandbrakePin);

  delay(1000); //safety delay to flash the code
}

void loop() {
  #if defined(DEBUG)
  if (millis() - lastDebug > DebugRefreshRate) {
    sendDebug = true;
    lastDebug = millis();
  }
#endif

#ifdef USE_ACCEL
  currentAcceleratorState = analogRead(AcceleratorPin);
  if (currentAcceleratorState != lastAcceleratorState)
  {
    Joystick.setRxAxis(currentAcceleratorState);
    lastAcceleratorState = currentAcceleratorState;
  }
#ifdef DEBUG
  minAcceleratorRead = min(minAcceleratorRead, currentAcceleratorState);
  maxAcceleratorRead = max(maxAcceleratorRead, currentAcceleratorState);
  if (sendDebug) {
    Serial.print("Acceleration : ");
    Serial.print(currentAcceleratorState);
    Serial.print(". Min is : ");
    Serial.print(minAcceleratorRead);
    Serial.print(". Max is : ");
    Serial.println(maxAcceleratorRead);
  }
#endif
#endif

#ifdef USE_BRAKE
  currentBrakeState = analogRead(BrakePin);
  if (currentBrakeState != lastBrakeState)
  {
    Joystick.setBrake(currentBrakeState);
    lastBrakeState = currentBrakeState;
  }
#ifdef DEBUG
  minBrakeRead = min(minBrakeRead, currentBrakeState);
  maxBrakeRead = max(maxBrakeRead, currentBrakeState);
  if (sendDebug) {
    Serial.print("       Brake : ");
    Serial.print(currentBrakeState);
    Serial.print(". Min is : ");
    Serial.print(minBrakeRead);
    Serial.print(". Max is : ");
    Serial.println(maxBrakeRead);
  }
#endif
#endif

#ifdef USE_CLUTCH
  currentClutchState = analogRead(ClutchPin);
  if (currentClutchState != lastClutchState)
  {
    Joystick.setXAxis(currentClutchState);
    lastClutchState = currentClutchState;
  }
#ifdef DEBUG
  minClutchRead = min(minClutchRead, currentClutchState);
  maxClutchRead = max(maxClutchRead, currentClutchState);
  if (sendDebug) {
    Serial.print("      Clutch : ");
    Serial.print(currentClutchState);
    Serial.print(". Min is : ");
    Serial.print(minClutchRead);
    Serial.print(". Max is : ");
    Serial.println(maxClutchRead);
  }
#endif
#endif



#ifdef USE_ANALOG_HANDBRAKE
  currentHandbrakeState = analogRead(HandbrakePin);
  if (currentHandbrakeState != lastHandbrakeState) {
    Joystick.setYAxis(currentHandbrakeState);
    lastHandbrakeState = currentHandbrakeState;
  }

#ifdef DEBUG
  minHandbrakeRead = min(minHandbrakeRead, currentHandbrakeState);
  maxHandbrakeRead = max(maxHandbrakeRead, currentHandbrakeState);
  if (sendDebug) {
    Serial.print("   Handbrake : ");
    Serial.print(currentHandbrakeState);
    Serial.print(". Min is : ");
    Serial.print(minHandbrakeRead);
    Serial.print(". Max is : ");
    Serial.println(maxHandbrakeRead);
  }
#endif
#endif
  if (sendDebug) {
    Serial.println("");
  }
  
#ifdef USE_DIGITAL_HANDBRAKE
  if(analogRead(HandbrakePin)>digitalHandbrakeSwitch){currentHandbrakeState = 1;}
  else{currentHandbrakeState = 0;}

  if (currentHandbrakeState != lastHandbrakeState)
  {
  Joystick.setButton(0, currentHandbrakeState);
    lastHandbrakeState = currentHandbrakeState;
  }
  #ifdef DEBUG
  minHandbrakeRead = min(minHandbrakeRead, currentHandbrakeState);
  maxHandbrakeRead = max(maxHandbrakeRead, currentHandbrakeState);
  Serial.print("Handbrake : ");
  Serial.print(currentHandbrakeState);
  Serial.print(". Min is : ");
  Serial.print(minHandbrakeRead);
  Serial.print(". Max is : ");
  Serial.println(maxHandbrakeRead);
  #endif
#endif

    sendDebug = false;
}
Code pour Arduino Leonardo

5) Leobodnar

Cet adaptateur permet de brancher les pédales SRT sans avoir à manipuler de code. En effet, Leobodnar met à disposition un logiciel simple d’utilisation qui permet de calibrer les pédales.

J’ai créé une boîte de jonction : un connecteur VGA mâle d’un côté, et trois câbles en sortie (diamètre AWG22, c’est celui indiqué dans la liste de course des pédales. Il y a un système anti-arrachement qui assure un fonctionnement fiable. Les fichiers 3D sont sur Thingiverse. Le connecteur mâle peut-être commandé ici sur Amazon, ou Aliexpress.

6) Thrustmaster

Les volants Thrustmaster T-GT, T300, T150, TS-XW, TX et TMX sont reliés aux pédaliers via un câble RJ12 6P6C (6 fils). Si vous ne savez pas où est le 1 sur votre câble, regardez les codes couleurs sur google.

1 – Frein

2 – Accélérateur

3 – Embrayage

4 – VCC ( +5v)

5 – Masse ( 0v)

6 – Masse ( 0v)