Quadrante do acelerador e roda de compensação
Componentes e suprimentos
| × | 1 | ||||
| × | 3 | ||||
| × | 1 |
Ferramentas e máquinas necessárias
| ||||
|
Aplicativos e serviços online
|
Sobre este projeto
Introdução
Tendo recentemente atualizado meu PC para habilitá-lo a rodar o MS FS2020, fiquei inspirado a melhorar os controles que estava usando. Um teclado realmente não tem a sensação certa para voar e eu queria atualizar a experiência para algo melhor. Eu não sou um piloto de vôo em tempo integral e não posso pagar o espaço ou dinheiro para dedicar muito para fazer uma cabine completa ou mesmo um conjunto de controles comprado.
Design
Comecei a projetar um conjunto de controles em CAD que poderia ser feito com as ferramentas que tenho e dar uma experiência razoável de como eu imagino que seria um avião real, nunca toquei nos controles de um avião, então é baseado no que Eu acho que eles seriam assim.
Eu decidi que os controles que eu gostaria são algumas alavancas únicas para acelerador, flaps, trem de pouso e uma roda de compensação de profundor. Eu vôo principalmente os pequenos aviões leves monomotores no sim, então era nisso que eu estava me concentrando.
A roda de acabamento foi o mais desafiador de projetar e levou várias idéias esboçadas ao longo de muitos dias para chegar a um projeto que eu pensei que forneceria a aparência que eu queria.
Construir
Todas as peças foram impressas em 3D em ABS no meu UP! impressora, eles foram pintados e conectados a um Arduino, um Leonardo para começar e depois trocado por um Micro. Para terminar com uma unidade plug and play que pode ser armazenada facilmente quando não estiver em uso.
Peças
Lista de peças impressas em 3D
Cada módulo de alavanca exigirá
Cada módulo de roda exigirá
As peças da caixa traseira podem ser usadas para hospedar o Arduino e a fiação.
Conclusão
Uma construção muito agradável, muito fácil do ponto de vista da codificação, o verdadeiro desafio nesta construção foi o design, especialmente a roda de acabamento e obter a sensação direito.
Código
- Quadrant.ino
Quadrant.ino Arduino
Use a variável de configuração e o monitor serial para encontrar os valores do ponto final para cada potenciômetro, insira-os na matriz axisLimits#includeJoystick_ Joystick; // coloque os valores máximos e mínimos do analogRead nestes matrizes // são traduzidos para um intervalo 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}; // liga ou desliga os eixos configurando essas variáveisbool a0Used =true; bool a1Used =true; bool a2Used =true; bool a3Used =true; bool a4Used =false; bool a5Used =false; // modo de configuração imprime o valor do pino e o valor traduzido para o monitor serial // configuração interna =-1; // sem impressão no monitor serial // int setting =2; // valores 0 - 5, imprime os valores dos pinos no monitor serial configuração =-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 (configuração> =0) Serial.begin (9600);} void loop () {valor int =0; int pos =0; if (a0Used) {value =analogRead (A0); pos =translateValue (valor, axisLimits0 [0], axisLimits0 [1]); Joystick.setThrottle (pos); if (configuração ==0) settingPrint (valor, pos); } if (a1Used) {value =analogRead (A1); pos =translateValue (valor, axisLimits1 [0], axisLimits1 [1]); Joystick.setRxAxis (pos); if (configuração ==1) settingPrint (valor, pos); } if (a2Used) {value =analogRead (A2); pos =translateValue (valor, axisLimits2 [0], axisLimits2 [1]); Joystick.setRyAxis (pos); if (configuração ==2) configuraçãoPrint (valor, pos); } if (a3Used) {value =analogRead (A3); pos =translateValue (valor, axisLimits3 [0], axisLimits3 [1]); Joystick.setRzAxis (pos); if (configuração ==3) configuraçãoPrint (valor, pos); } if (a4Used) {value =analogRead (A4); pos =translateValue (valor, axisLimits4 [0], axisLimits4 [1]); Joystick.setXAxis (pos); if (configuração ==4) configuraçãoPrint (valor, pos); } if (a5Used) {value =analogRead (A5); pos =translateValue (valor, axisLimits5 [0], axisLimits5 [1]); Joystick.setYAxis (pos); if (configuração ==5) configuraçãoPrint (valor, pos); } delay (5);} int translateValue (int v, int f1, int f2) {// traduz os valores para um intervalo de 0 a 1023 int result =0; início interno =0; intervalo flutuante =0; if (f1 1023) resultado =1023; resultado de retorno;} void settingPrint (valor int, pos int) {Serial.print (valor); Serial.print (""); Serial.println (pos);}
Peças personalizadas e gabinetes
Um sem a guia, caso você precise. O que eu usoSketchfab ainda em processamento.
Este arquivo contém todas as partes como um arquivo STEP launch_u3k8QjPXzJ.stp
Esquemas
Para adicionar mais controles, conecte 5V e GRD e use os pinos A1 a A5 quadrant_ZkMygPyRiE.fzzProcesso de manufatura
- Animação de LCD e jogos
- Faça você mesmo voltímetro usando Arduino e Smartphone
- Registrador de dados de temperatura e umidade
- FlightGear Analog Trim Tab Wheel
- Comunicação Python3 e Arduino
- Arduino e autômatos celulares baseados em OLED
- Rádio FM usando Arduino e RDA8057M
- Sistema de atendimento baseado em Arduino e planilha do Google
- IoT:Windows Remote Arduino e aplicativos universais
- Entendendo o balanceamento e alinhamento das rodas