油门象限和配平轮
组件和用品
| × | 1 | ||||
| × | 3 | ||||
| × | 1 |
必要的工具和机器
| ||||
|
应用和在线服务
|
关于这个项目
简介
最近升级了我的 PC 以使其能够运行 MS FS2020,我受到启发来改进我使用的控件。键盘真的没有正确的飞行感觉,我想将体验升级到更好的东西。我不是一个全职的飞行爱好者,负担不起空间或金钱来投入大量精力来制作一个完整的驾驶舱,甚至是一套购买的控制装置。
设计
我开始在 CAD 中设计一组可以使用我拥有的工具制作的控件,并给出我想象的真实飞机感觉的合理体验,我从未接触过飞机上的控件,因此它基于什么我认为他们会像。
我决定我想要的控制是一些用于油门、襟翼、起落架和升降舵配平轮的单杆。我主要驾驶模拟中的小型轻型单引擎飞机,这就是我关注的重点。
装饰轮的设计最具挑战性,我花了好几天的时间构思出一个我认为可以提供我想要的外观和感觉的设计。
构建
所有零件都是在我的 UP 上用 ABS 3D 打印的!打印机,然后他们被绘制并连接到一个 Arduino,一个莱昂纳多开始,然后交换到一个微型。最终得到一个即插即用的装置,不用时可以很容易地收起来。
零件
3D打印零件清单
每个杠杆模块将需要
每个车轮模块都需要
后箱部件可用于容纳 Arduino 和接线。
结论
一个非常愉快的构建,从编码的角度来看非常简单,这个构建中真正的挑战是设计,尤其是装饰轮和获得感觉 对。
代码
- Quadrant.ino
Quadrant.inoArduino
使用设置变量和串行监视器找到每个电位器的终点值,将它们输入axisLimits 数组#includeJoystick_ Joystick;// 将analogRead 中的最大值和最小值放入这些数组// 这些被转换为 0 - 1023int axisLimits0[] ={686, 338};int axisLimits1[] ={345, 695};int axisLimits2[] ={327, 678};int axisLimits3[] ={342, 692};int axisLimits4[] ={0, 1023};int axisLimits5[] ={0, 1023};// 通过设置这些变量来打开或关闭轴bool a0Used =true;bool a1Used =true;bool a2Used =true;bool a3Used =true;bool a4Used =false;bool a5Used =false;// 设置模式将引脚值和转换值打印到串行监视器// int setting =-1; // 不打印到串行监视器// int setting =2; // 值 0 - 5,将引脚值打印到串行监视器int setting =-1;void setup() { if(a0Used) pinMode(A0, INPUT); if(a1Used) pinMode(A1, INPUT); if(a2Used) pinMode(A2, INPUT); if(a3Used) pinMode(A3, INPUT); if(a4Used) pinMode(A4, INPUT); if(a5Used) pinMode(A5, INPUT);操纵杆。开始(); if(setting>=0) Serial.begin(9600);}void loop() { int value =0; int pos =0; if(a0Used){ value =analogRead(A0); pos =translateValue(value,axisLimits0[0],axisLimits0[1]); Joystick.setThrottle(pos); if(setting ==0) settingPrint(value, pos); } if(a1Used){ value =analogRead(A1); pos =translateValue(value,axisLimits1[0],axisLimits1[1]); Joystick.setRxAxis(pos); if(setting ==1) settingPrint(value, pos); } if(a2Used){ value =analogRead(A2); pos =translateValue(value,axisLimits2[0],axisLimits2[1]); Joystick.setRyAxis(pos); if(setting ==2) settingPrint(value, pos); } if(a3Used){ value =analogRead(A3); pos =translateValue(value,axisLimits3[0],axisLimits3[1]); Joystick.setRzAxis(pos); if(setting ==3) settingPrint(value, pos); } if(a4Used){ value =analogRead(A4); pos =translateValue(value,axisLimits4[0],axisLimits4[1]); Joystick.setXAxis(pos); if(setting ==4) settingPrint(value, pos); } if(a5Used){ value =analogRead(A5); pos =translateValue(value,axisLimits5[0],axisLimits5[1]);操纵杆.setYAxis(pos); if(setting ==5) settingPrint(value, pos); } delay(5);}int translateValue(int v, int f1, int f2){ // 将值转换为 0 - 1023 范围 int result =0; int 开始 =0;浮动范围 =0; if(f1 1023)结果 =1023;返回结果;}void settingPrint(int value, int pos){ Serial.print(value); Serial.print(" "); Serial.println(pos);}
定制零件和外壳
一种没有标签以备不时之需我使用的一种Sketchfab 仍在处理中。
此文件包含 STEP 文件的所有部分 已发布_u3k8QjPXzJ.stp示意图
要添加更多控件,请连接 5V 和 GRD 并使用引脚 A1 到 A5 quadrant_ZkMygPyRiE.fzz制造工艺