Pedal Kemudi DIY untuk Simulator Penerbangan
Komponen dan persediaan
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| Potensiometer Digital Tunggal/Dual dengan Antarmuka SPI™ MCP41050 | | × | 3 | |
| Sensor linier efek hall SS49E | | × | 4 | |
Tentang proyek ini
Perbarui 2021
Versi baru pedal memiliki antarmuka HID dan desain yang ditingkatkan. Modul sensor efek Hall yang canggih memberikan kontrol yang sangat presisi. Detail di situs web saya.
Hai, penerbangan mendidih! Saya menemukan dan membuat pedal untuk simulator pesawat, fungsi utamanya dilakukan oleh Arduino. Dan saya sangat ingin berbagi perkembangan ini dengan Anda. Ternyata pedal seperti itu dapat dibuat dalam dua hari, tetapi butuh dua minggu untuk menggambarkan proses pembuatannya. Oleh karena itu, saya membuat beberapa video yang menunjukkan proses ini sedetail mungkin.
Membuat pedal
Arduino dapat dihubungkan ke simulator penerbangan dengan dua cara. Tautkan ke koneksi digital menggunakan ArduinoJoystickLibrary dan papan Mikro Arduino di sini.
Saya menghubungkan pedal saya dengan koneksi analog. Dan sketsa yang diberikan di sini mengacu pada metode koneksi ini.
Kedua metode ini, membuat sirkuit dan mengonfigurasi sensor ditunjukkan dalam video berikut.
Sensor dan elektronik
Saya sangat tertarik dengan pendapat Anda tentang desain ini, silakan tinggalkan komentar Anda.
Kode
- Keluaran analog melalui digiPOTs
Keluaran analog melalui digiPOTsArduino
<,dpre>#include #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_left_left SENSOR_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.mulai(); pinMode (CS_RUDDER, OUTPUT); pinMode (CS_LEFT, OUTPUT); pinMode (CS_KANAN, OUTPUT); }void loop() { // ------------------------------------------ -------------- // RUDDER PEDALS -128 --- x --- 128 // -------------------- ------------------------------------ // Membaca dan memetakan kembali 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; // Setel batasan RUDDER KIRI jika (remap_left> 0) remap_left =0; if (remap_left <=-128) remap_left =-128; // Membaca dan memetakan kembali sensor RUDDER RIGHT val_right =analogRead(SENSOR_RUDDER_RIGHT); if (val_right <=950) { remap_right =peta(val_right, 0, 820, 132, 0); // -50 } else remap_right =0; //Tetapkan batasan RUDDER KANAN jika (remap_right <0) remap_right =0; if (remap_right>=127) remap_right =127; kemudi =remap_left + remap_right; if (remap_left ==0) { tuning_rudder =tuning_rudder + 128; } else { tuning_rudder =abs(tuning_rudder - 128); } // ----------------------------------------------- --------- // REM // ------------------------------------ -------------------- val_brake_left =analogRead(SENSOR_LEFT_PEDAL); if (val_brake_left <=328) { remap_brake_left =peta(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 =peta(val_brake_right, 200, 328, 0, 255); } else remap_brake_right =255; if (remap_brake_right <0) remap_brake_right =0; /* // ARDUINO SETUP // Pengaturan sensor netral Serial.print(val_left); Serial.print(" | "); Serial.println(val_right); penundaan (400); // Pengaturan keluaran Serial.print(remap_brake_left); Serial.print(" | "); Serial.println(remap_brake_right); Serial.print(" | "); Serial.print(kemudi); Serial.print(" | "); Serial.println(tuning_rudder); delay(400);*/ //---------------------------------------- --------------- // KIRIM DATA KE digiPOT // --------------------------- ----------------------------- digitalWrite(CS_RUDDER, RENDAH); SPI.transfer(0b00010001); SPI.transfer(tuning_rudder); digitalWrite(CS_RUDDER, TINGGI); penundaan (5); // Penundaan untuk pemulusan waktu data digitalWrite(CS_LEFT, LOW); SPI.transfer(0b00010001); SPI.transfer(remap_brake_left); digitalWrite(CS_LEFT, TINGGI); penundaan (5); digitalWrite(CS_KANAN, RENDAH); SPI.transfer(0b00010001); SPI.transfer(remap_brake_right); digitalWrite(CS_KANAN, TINGGI); delay(5);}