Flugsimulator-Ruderpedale selbst bauen: Schritt-für-Schritt DIY-Anleitung
Komponenten und Zubehör
| Komponente | Menge | Hinweise |
|---|---|---|
| Arduino Nano R3 | 1 | Alternative: Arduino UNO für Analogausgang |
| Arduino Micro | 1 | Für rein digitalen Ausgang (Windows 8/10, JoystickLibrary) |
| Arduino UNO | 1 | Alternative: Arduino Nano für Analogausgang |
| Digitales Potentiometer MCP41050 (SPI) | 3 | Einfach/dual, SPI-Schnittstelle |
| SS49E Hall-Effekt-Linearsensor | 4 | Oder ähnlich (z. B. AH3503) – kein Schalter, kein digitaler Sensor! |
Über dieses Projekt
Update 2021: Die neue Version der Pedale besitzt ein HID-Interface und ein verbessertes Design. Das fortschrittliche Hall-Sensor-Modul ermöglicht sehr präzise Steuerung. Details auf meiner Website.
Hallo Flugsimulator-Enthusiasten! Ich habe Ruderpedale für einen Flugsimulator entwickelt, deren Kernfunktion ein Arduino übernimmt. Ich möchte diese Entwicklung mit euch teilen. Der Bau dauert etwa zwei Tage, die Dokumentation zwei Wochen. Daher habe ich mehrere Videos erstellt, die den Prozess detailliert zeigen.
Pedalbau
Der Arduino kann auf zwei Arten mit dem Flugsimulator verbunden werden:
- Digital: Mit
ArduinoJoystickLibraryund einem Arduino Micro. Link zur Anleitung. - Analog: Meine Pedale nutzen eine analoge Verbindung. Der hier gezeigte Sketch bezieht sich auf diese Methode.
Beide Methoden – Schaltungsbau und Sensorkonfiguration – werden in den verlinkten Videos gezeigt.
Sensoren und Elektronik
Ich freue mich über eure Meinungen zu diesem Design – bitte hinterlasst Kommentare.
Code: Analogausgang über digitale Potentiometer (MCP41050)
#include <SPI.h>
#define CS_RUDDER 10
#define CS_LEFT 8
#define CS_RIGHT 9
#define SENSOR_LEFT_PEDAL A6
#define SENSOR_RIGHT_PEDAL A5
#define SENSOR_RUDDER_LEFT A0
#define SENSOR_RUDDER_RIGHT A1
int val_left, val_right, remap_left, remap_right, rudder;
int val_brake_left, val_brake_right, remap_brake_left, remap_brake_right;
int tuning_rudder = 128;
void setup() {
Serial.begin(9600);
SPI.begin();
pinMode(CS_RUDDER, OUTPUT);
pinMode(CS_LEFT, OUTPUT);
pinMode(CS_RIGHT, OUTPUT);
}
void loop() {
// --------------------------------------------------------
// RUDERPEDALE: -128 ... 0 ... +127
// --------------------------------------------------------
// Linker Rudersensor
val_left = analogRead(SENSOR_RUDDER_LEFT);
if (val_left <= 950) {
remap_left = map(val_left, 30, 870, -128, 0);
} else {
remap_left = 0;
}
// Begrenzung
if (remap_left > 0) remap_left = 0;
if (remap_left < -128) remap_left = -128;
// Rechter Rudersensor
val_right = analogRead(SENSOR_RUDDER_RIGHT);
if (val_right <= 950) {
remap_right = map(val_right, 0, 820, 132, 0);
} else {
remap_right = 0;
}
if (remap_right < 0) remap_right = 0;
if (remap_right > 127) remap_right = 127;
rudder = remap_left + remap_right;
// Nullpunkt-Abgleich (Trimmung)
if (remap_left == 0) {
tuning_rudder = tuning_rudder + 128;
} else {
tuning_rudder = abs(tuning_rudder - 128);
}
// --------------------------------------------------------
// BREMSPEDALE
// --------------------------------------------------------
val_brake_left = analogRead(SENSOR_LEFT_PEDAL);
if (val_brake_left <= 328) {
remap_brake_left = map(val_brake_left, 200, 328, 0, 255);
} else {
remap_brake_left = 255;
}
if (remap_brake_left < 0) remap_brake_left = 0;
val_brake_right = analogRead(SENSOR_RIGHT_PEDAL);
if (val_brake_right <= 328) {
remap_brake_right = map(val_brake_right, 200, 328, 0, 255);
} else {
remap_brake_right = 255;
}
if (remap_brake_right < 0) remap_brake_right = 0;
// --------------------------------------------------------
// DATEN AN DIGITALE POTENTIOMETER SENDEN (SPI)
// --------------------------------------------------------
// Ruder
digitalWrite(CS_RUDDER, LOW);
SPI.transfer(0b00010001); // Befehl: Wiper 0 setzen
SPI.transfer(tuning_rudder);
digitalWrite(CS_RUDDER, HIGH);
delay(5);
// Linke Bremse
digitalWrite(CS_LEFT, LOW);
SPI.transfer(0b00010001);
SPI.transfer(remap_brake_left);
digitalWrite(CS_LEFT, HIGH);
delay(5);
// Rechte Bremse
digitalWrite(CS_RIGHT, LOW);
SPI.transfer(0b00010001);
SPI.transfer(remap_brake_right);
digitalWrite(CS_RIGHT, HIGH);
delay(5);
}
Schaltpläne



Herstellungsprozess
- Arduino Nano Flight Simulator 2020 Kontrollpanel – LCD & CDI Display
- Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
- DIY VR-Skateboard mit Arduino, Google Cardboard und Bluetooth bauen
- DIY Radionik EMR-Behandlungsgerät mit Arduino Nano – Kritische Betrachtung
- Smartes Temperatur-Monitoring für Schulen – Arduino, Raspberry Pi, Sigfox & ThingSpeak
- Effiziente 8-Bit-I/O-Port-Bibliothek für Arduino – Digitale Steuerung erweitern
- Arduino 64-Tasten-Prototyp-Keyboard-Matrix – Eigenes Keyboard mit Schieberegistern bauen
- DIY 2D-Motion-Rennsimulator mit Arduino Nano & SG90 Servos
- DC-Motor-Steuerung meistern: Experten-Tipps & Tricks mit PID-Regler
- Kostengünstiger Blitzdetektor mit Arduino Uno – VLF-EMF-Sensor