Quadrant des gaz et molette de trim
Composants et fournitures
| × | 1 | ||||
| × | 3 | ||||
| × | 1 |
Outils et machines nécessaires
| ||||
|
Applications et services en ligne
|
À propos de ce projet
Présentation
Ayant récemment mis à niveau mon PC pour lui permettre d'exécuter MS FS2020, j'ai eu envie d'améliorer les commandes que j'utilisais. Un clavier n'a pas vraiment la bonne sensation pour voler et je voulais améliorer l'expérience vers quelque chose de mieux. Je ne suis pas un voleur à temps plein et je ne peux pas me permettre l'espace ou l'argent pour consacrer beaucoup à la fabrication d'un cockpit complet ou même d'un ensemble de commandes acheté.
Conception
J'ai commencé à concevoir un ensemble de commandes en CAO qui pourraient être faites avec les outils dont je dispose et donner une expérience raisonnable de ce que j'imagine qu'un vrai avion se sentirait, je n'ai jamais touché les commandes d'un avion donc c'est basé sur ce que Je pense qu'ils seraient comme.
J'ai décidé que les commandes que je voudrais sont des leviers simples pour les gaz, les volets, le train d'atterrissage et une roue de compensation de profondeur. Je pilote principalement les petits avions monomoteurs légers dans la simulation, c'est donc ce sur quoi je me concentrais.
La roue de garniture était la plus difficile à concevoir et il a fallu plusieurs idées esquissées sur plusieurs jours pour arriver à un design qui, selon moi, offrirait l'apparence que je voulais.
Construire
Toutes les pièces ont été imprimées en 3D en ABS sur mon UP ! imprimante, ils ont ensuite été peints et câblés à un Arduino, un Leonardo pour commencer, puis échangés contre un Micro. Pour finir avec une unité plug and play qui peut être rangée facilement lorsqu'elle n'est pas utilisée.
Pièces
Liste des pièces imprimées en 3D
Chaque module de levier nécessitera
Chaque module de roue nécessitera
Les pièces du boîtier arrière peuvent être utilisées pour loger l'Arduino et le câblage.
Conclusion
Une construction très agréable, très facile du point de vue du codage, le vrai défi de cette construction était la conception, en particulier la molette de garniture et la sensation à droite.
Code
- Quadrant.ino
Quadrant.inoArduino
Utilisez la variable de réglage et le moniteur série pour trouver les valeurs de point final pour chaque potentiomètre, entrez-les dans le tableau axisLimits#includeJoystick_ Joystick ; // mettre les valeurs max et min de l'analogiqueRead dans ces tableaux // ceux-ci sont traduits dans une plage de 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};// activez ou désactivez les axes en définissant ces variablesbool a0Used =true;bool a1Used =true;bool a2Used =true;bool a3Used =true;bool a4Used =false;bool a5Used =false;// le mode de réglage imprime la valeur de la broche et la valeur traduite sur le moniteur série// réglage int =-1 ; // pas d'impression sur le moniteur série // int setting =2; // valeurs 0 - 5, imprimez les valeurs des broches sur le paramètre serial monitorint =-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); Joystick.begin(); if(setting>=0) Serial.begin(96000);}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]); Joystick.setYAxis(pos); if(réglage ==5) settingPrint(valeur, pos); } delay(5);}int translateValue(int v, int f1, int f2){ // traduit les valeurs en une plage de 0 - 1023 int result =0; int début =0 ; plage flottante =0 ; if(f1 1023) résultat =1023 ; return result;}void settingPrint(int value, int pos){ Serial.print(value); Serial.print(" "); Serial.println(pos);}
Pièces et boîtiers personnalisés
Un sans la languette au cas où vous en auriez besoinCelui que j'utiliseSketchfab est toujours en cours de traitement.
Ce fichier contient toutes les pièces sous forme de fichier STEP release_u3k8QjPXzJ.stpSchémas
Pour ajouter plus de commandes, branchez 5V et GRD et utilisez les broches A1 à A5 quadrant_ZkMygPyRiE.fzzProcessus de fabrication
- Animation LCD et jeux
- Voltmètre DIY utilisant Arduino et Smartphone
- Enregistreur de données de température et d'humidité
- Molette de trim analogique FlightGear
- Communication Python3 et Arduino
- Automates cellulaires basés sur Arduino et OLED
- Radio FM utilisant Arduino et RDA8057M
- Système de présence basé sur Arduino et la feuille de calcul Google
- Comprendre l'équilibrage et l'alignement des roues