Bouw Je Eigen Vluchtsimulator Ruiterpedalen: Stap-voor-Stap DIY Handleiding
Onderdelen en benodigdheden
| Onderdeel | Opmerking | Aantal |
|---|---|---|
| Arduino Nano R3 | Of Arduino UNO voor analoge output | 1 |
| Arduino Micro | Alleen als je DIGITALE OUTPUT nodig hebt voor Windows 8-10 | 1 |
| Arduino UNO | Of Arduino NANO voor analoge output | 1 |
| Single/Dual Digital Potentiometer met SPI™ Interface MCP41050 | 3 | |
| SS49E Hall-effect lineaire sensor | Of vergelijkbare sensoren zoals AH3503 (geen schakelaar, geen digitale!) | 4 |
Over dit project
Update 2021
De nieuwe versie van de pedalen heeft een HID-interface en een verbeterd ontwerp. De geavanceerde Hall-effect sensoren module biedt zeer nauwkeurige controle. Details op mijn website.
Hallo vluchtsimmers! Ik heb ruiterpedalen voor een vliegtuigsimulator ontworpen en gebouwd, waarbij de Arduino de hoofdfunctie vervult. Ik wil deze ontwikkeling graag met jullie delen. Het bouwen van dergelijke pedalen duurt ongeveer twee dagen, maar het documenteren van het proces kost twee weken. Daarom heb ik verschillende video's gemaakt die het proces zo gedetailleerd mogelijk tonen.
Pedalen bouwen
De Arduino kan op twee manieren verbonden worden met de vluchtsimulator. Link naar de digitale verbinding met ArduinoJoystickLibrary en Arduino Micro board hier.
Ik verbind mijn pedalen via een analoge verbinding. De hier gegeven sketch betreft deze verbindingsmethode.
Beide methoden, het maken van de schakeling en het configureren van sensoren, worden in de volgende video getoond.
Sensoren en elektronica
Ik ben erg geïnteresseerd in jullie mening over dit ontwerp, laat jullie reacties achter.
Code
Analoge output via digiPOTs (Arduino)
#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() {
// --------------------------------------------------------
// RUITERPEDALEN -128 --- x --- 128
// --------------------------------------------------------
// Sensor RUITER LINKS lezen en hermapen
val_left = analogRead(SENSOR_RUDDER_LEFT);
if (val_left <= 950) {
remap_left = map(val_left, 30, 870, -128, 0);
} else {
remap_left = 0;
}
// Beperkingen RUITER LINKS
if (remap_left > 0) remap_left = 0;
if (remap_left <= -128) remap_left = -128;
// Sensor RUITER RECHTS lezen en hermapen
val_right = analogRead(SENSOR_RUDDER_RIGHT);
if (val_right <= 950) {
remap_right = map(val_right, 0, 820, 132, 0);
} else {
remap_right = 0;
}
// Beperkingen RUITER RECHTS
if (remap_right < 0) remap_right = 0;
if (remap_right >= 127) remap_right = 127;
rudder = remap_left + remap_right;
if (remap_left == 0) {
tuning_rudder = tuning_rudder + 128;
} else {
tuning_rudder = abs(tuning_rudder - 128);
}
// --------------------------------------------------------
// REMME
// --------------------------------------------------------
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;
/*
// ARDUINO SETUP - Neutral sensors setup
Serial.print(val_left); Serial.print(" | "); Serial.println(val_right); delay(400);
// Output setup
Serial.print(remap_brake_left); Serial.print(" | "); Serial.println(remap_brake_right);
Serial.print(" | "); Serial.print(rudder); Serial.print(" | "); Serial.println(tuning_rudder); delay(400);
*/
// --------------------------------------------------------
// DATA NAAR digiPOTs STUREN
// --------------------------------------------------------
digitalWrite(CS_RUDDER, LOW);
SPI.transfer(0b00010001);
SPI.transfer(tuning_rudder);
digitalWrite(CS_RUDDER, HIGH);
delay(5); // Vertraging voor data gladstrekken
digitalWrite(CS_LEFT, LOW);
SPI.transfer(0b00010001);
SPI.transfer(remap_brake_left);
digitalWrite(CS_LEFT, HIGH);
delay(5);
digitalWrite(CS_RIGHT, LOW);
SPI.transfer(0b00010001);
SPI.transfer(remap_brake_right);
digitalWrite(CS_RIGHT, HIGH);
delay(5);
}
Schema's



Productieproces
- Arduino Nano Flight Simulator 2020 Bedieningspaneel – LCD & CDI Display
- Een slimme voltmeter bouwen met Arduino en smartphone – Eenvoudig DIY-project
- Bouw een DIY VR-skateboard met Arduino, Google Cardboard en Bluetooth
- Bouw een DIY Arduino Radionica EMR Behandelapparaat
- Slim Temperatuurmonitoring Systeem voor Scholen: Nauwkeurig, Real-time en Beveiligd
- Efficiënte 8-bit IO-poort bibliotheek voor Arduino – Uitbreiding digitale controle
- Arduino 64-toets Prototoetsenbord Matrix – Bouw een Aangepast Toetsenbord met Shift Registers
- DIY 2D Motion Racing Simulator met Arduino Nano & SG90 Servo's
- DC-motorbeheersing onder de knie: Expert Tips & Trucs met PID-regeling
- Bouw een Kosteneffectieve Bliksemdetector met Arduino Uno
- Bouw een draagbare RFID-deurslot met Arduino – Stap-voor-stap handleiding