飞行模拟器的 DIY 方向舵踏板
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 4 |
关于这个项目
2021 年更新
新版本的踏板具有 HID 接口和改进的设计。先进的霍尔效应传感器模块提供非常精确的控制。 详情请见我的网站。
嗨,飞行慢炖!我为飞机模拟器发明并制作了踏板,其主要功能由 Arduino 执行。我真的很想与您分享这一发展。原来,这样的踏板可以在两天内制作完成,但描述制作它们的过程却需要两周时间。因此,我制作了几个视频,尽可能详细地展示了这个过程。
制作踏板
Arduino 可以通过两种方式连接到飞行模拟器。在此处使用 ArduinoJoystickLibrary 和 Arduino Micro 板链接到数字连接。
我用模拟连接连接我的踏板。而这里给出的草图就是指这种连接方式。
以下视频展示了这两种方法、创建电路和配置传感器。
传感器和电子设备
我对您对此设计的意见很感兴趣,请留下您的意见。
代码
- 通过 digiPOT 进行模拟输出
通过digiPOTs的模拟输出Arduino
#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 SENSOR_RUDDER_RIGHT A1int_left,remap_left_val,remap_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,输出); }void loop() { // ------------------------------------------ -------------- // 方向舵踏板 -128 --- x --- 128 // -------------------- ------------------------------------ // 读取并重新映射传感器 RUDDER LEFT val_left =analogRead(SENSOR_RUDDER_LEFT); if (val_left <=950) { remap_left =map(val_left, 30, 870, -128, 0); // -40 } 否则 remap_left =0; // 设置限制 RUDDER LEFT if (remap_left> 0) remap_left =0;如果(remap_left <=-128)remap_left =-128; // 读取并重新映射传感器 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; //设置限制 RUDDER RIGHT if (remap_right <0) remap_right =0;如果(remap_right>=127)remap_right =127;方向舵 =remap_left + remap_right; if (remap_left ==0) { tuning_rudder =tuning_rudder + 128; } else {tuning_rudder =abs(tuning_rudder - 128); } // --------------------------------------------------------- --------- // 刹车 // ------------------------------------ -------------------- val_brake_left =analogRead(SENSOR_LEFT_PEDAL); if (val_brake_left <=328) { remap_brake_left =map(val_brake_left, 200, 328, 0, 255); } 否则 remap_brake_left =255;如果(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); } 否则 remap_brake_right =255;如果(remap_brake_right <0)remap_brake_right =0; /* // ARDUINO SETUP // 中性传感器设置 Serial.print(val_left); Serial.print(" | " ); Serial.println(val_right);延迟(400); // 输出设置 Serial.print(remap_brake_left); Serial.print(" | " ); Serial.println(remap_brake_right); Serial.print(" | " ); Serial.print(方向舵); Serial.print(" | " ); Serial.println(tuning_rudder);延迟(400);*/ // ----------------------------------------- --------------- // 将数据发送到 digiPOT // --------------------------- ----------------------------- 数字写入(CS_RUDDER, LOW); SPI.transfer(0b00010001); SPI.transfer(tuning_rudder);数字写入(CS_RUDDER,高);延迟(5); // 数据时间平滑延迟 digitalWrite(CS_LEFT, LOW); SPI.transfer(0b00010001); SPI.transfer(remap_brake_left);数字写入(CS_LEFT,高);延迟(5);数字写入(CS_RIGHT,低); SPI.transfer(0b00010001); SPI.transfer(remap_brake_right);数字写入(CS_RIGHT,高);延迟(5);}
示意图
制造工艺