Membangun Pedal Pengendara Pesawat Simulator Sendiri: Panduan DIY Langkah demi Langkah
Komponen dan Perlengkapan
 | | × | 1 | |
 | | × | 1 | |
 | | × | 1 | |
| | Single/Dual Digital Potentiometer with SPI™ Interface MCP41050 |
| × | 3 | |
| | SS49E Hall-effect linear sensor |
| × | 4 | |
Tentang Proyek Ini
Update 2021
Versi baru pedal memiliki antarmuka HID dan desain yang ditingkatkan. Modul sensor Hall effect canggih memberikan kontrol yang sangat presisi. Detail di situs web saya.
Hi, flight simmers! Saya menemukan dan membuat pedal untuk simulator pesawat, fungsi utamanya dilakukan oleh Arduino. Dan saya sangat ingin membagikan pengembangan ini dengan Anda. Ternyata pedal seperti ini dapat dibuat dalam dua hari, tetapi membutuhkan dua minggu untuk menggambarkan proses pembuatannya. Oleh karena itu, saya membuat beberapa video yang menunjukkan proses ini se detail mungkin.
Membuat Pedal
Arduino dapat terhubung ke simulator pesawat dengan dua cara. Tautan ke koneksi digital menggunakan ArduinoJoystickLibrary dan papan Arduino Micro di sini.
Saya menghubungkan pedal saya dengan koneksi analog. Dan sketsa yang diberikan di sini merujuk pada metode koneksi ini.
Kedua metode ini, pembuatan rangkaian dan konfigurasi sensor ditunjukkan dalam video berikut.
Sensor dan Elektronika
Saya sangat tertarik dengan pendapat Anda tentang desain ini, silakan tinggalkan komentar Anda.
Kode
- Analog output via digiPOTs
Analog output via digiPOTsArduino
#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, val_brake_left, val_brake_right, remap_brake_left, remap_brake_right; int tuning_rudder = 128; // int tuning_left_brake = 255; // int tuning_right_brake = 255; void setup() { Serial.begin(9600); SPI.begin(); pinMode (CS_RUDDER, OUTPUT); pinMode (CS_LEFT, OUTPUT); pinMode (CS_RIGHT, OUTPUT); } void loop() { // -------------------------------------------------------- // RUDDER PEDALS -128 --- x --- 128 // -------------------------------------------------------- // Read and remap sensor RUDDER LEFT val_left = analogRead(SENSOR_RUDDER_LEFT); if (val_left <= 950) { remap_left = map(val_left, 30, 870, -128, 0); // -40 } else remap_left = 0; // Set limitations RUDDER LEFT if (remap_left > 0) remap_left = 0; if (remap_left <= -128) remap_left = -128; // Read and remap sensor RUDDER RIGHT val_right = analogRead(SENSOR_RUDDER_RIGHT); if (val_right <= 950) { remap_right = map(val_right, 0, 820, 132, 0); // -50 } else remap_right = 0; //Set limitations RUDDER RIGHT 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); } // -------------------------------------------------------- // BRAKING // -------------------------------------------------------- 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); */ // -------------------------------------------------------- // SEND DATA TO digiPOTs // -------------------------------------------------------- digitalWrite(CS_RUDDER, LOW); SPI.transfer(0b00010001); SPI.transfer(tuning_rudder); digitalWrite(CS_RUDDER, HIGH); delay(5); // Delay for data time smoothing 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); }
Skematik

