Índice:
- Etapa 1: Soldar os cabeçalhos dos pinos para as portas de E / S adicionais do Arduino
- Etapa 2: adicionar a biblioteca de joystick do Arduino ao seu IDE
- Etapa 3: atualize o código no Arduino
- Etapa 4: faça a fiação
- Etapa 5: vincular o receptor
- Etapa 6: ajuste o código às suas circunstâncias
- Etapa 7: calibrar o joystick emulado
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Converte sinais PPM de um receptor de rádio em posições de joystick
Use-o para jogar seus jogos favoritos e simuladores de vôo com seu transmissor de rádio R / C. Este Instructable usa um Arduino da littleBits e um receptor DSMX mais um trecho de código simples para fazer essa conversão.
Você vai precisar
- Poder
- Arduino
- Cabos USB
- cabeçalhos de alfinetes
- fio de ligação
- um receptor de rádio com saída PPM.
Etapa 1: Soldar os cabeçalhos dos pinos para as portas de E / S adicionais do Arduino
Para alimentar o receptor (RX), cabeçalhos de pinos precisam ser adicionados ao Arduino. Isso também tornará a fiação entre o bit e o RX muito mais fácil. Consulte https://discuss.littlebits.cc/t/using-the-additional-i-os-on-the-arduino-bit para obter mais informações.
Etapa 2: adicionar a biblioteca de joystick do Arduino ao seu IDE
Você pode encontrar a biblioteca no GitHub, https://github.com/MHeironimus/ArduinoJoystickLib… Obrigado, Matthew Heironimus, por escrevê-la.
Apenas alguns Arduinos podem emular um HID como um joystick. Como o microcontrolador littleBits é um Arduino Leonardo no coração, você está pronto para começar.
Etapa 3: atualize o código no Arduino
#include #define inputPin 16 # define canais 4 #define lo 800 // ajusta a saída de RX # define hi 1600 // ajusta a saída de RX # define filtro 10int canal [canais]; int previousValue [canais]; contador interno = 0; Joystick_ Joystick (JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0, 0, verdadeiro, verdadeiro, falso, falso, falso, falso, verdadeiro, verdadeiro, falso, falso, falso); configuração void () {Joystick.setXAxisRange (lo, Oi); Joystick.setYAxisRange (lo, hi); Joystick.setThrottleRange (lo, hi); Joystick.setRudderRange (lo, hi); Joystick.begin (); Serial.begin (9600); pinMode (inputPin, INPUT); } void loop () {if (pulseIn (inputPin, HIGH)> 3000) {for (int i = 0; i <= canais-1; i ++) {canal = pulseIn (inputPin, HIGH); } para (int i = 0; i <= canais-1; i ++) {if ((canal > 2000) || (canal <500)) {canal = valor anterior ; } else {canal = (valor anterior + canal ) / 2; contador ++; }} Joystick.setXAxis (canal [0]); Joystick.setYAxis (canal [1]); Joystick.setThrottle (canal [2]); Joystick.setRudder (canal [3]); } if (contador> filtro) {para (int i = 0; i <= canais-1; i ++) {Serial.print ("canal"); Serial.print (i + 1); Serial.print (":"); Serial.println (canal ); valor anterior = canal ; } contador = 0; }}
Esteja ciente de que o código que faz a ponte entre o sinal R / C e o USB HID emulado vem em sua forma mais simples. A função usada aqui - pulseIn - é uma função de bloqueio. Leia aqui e aqui como implementar uma abordagem sem bloqueio usando interrupções.
Etapa 4: faça a fiação
Conecte os cabos jumper / DuPont entre o Bit e o RX. Os conectores nas extremidades desses cabos precisam ser fêmeas. Conectamos GND (azul), VCC (marrom) e sinal (laranja) da porta PPM do RX ao GND, VCC e d16 no Arduino.
Etapa 5: vincular o receptor
Desconecte o Arduino da alimentação. Coloque o chicote de amarração no local do conector marcado BIND no RX. Ligue o seu transmissor de rádio e coloque-o no modo de ligação. Em seguida, aplique energia ao Arduino. O processo de vinculação foi bem-sucedido quando o LED do receptor acende.
Etapa 6: ajuste o código às suas circunstâncias
As constantes hi e lo no esboço do Arduino precisam ser alteradas para refletir a saída real do receptor que você está usando.
#define lo 800
#define hi 1600
Os sinais dentro do pulso PPM variam idealmente de 1000μs a 2000μs. O RX usado neste Instructable emite valores aproximadamente entre 800 e 1600 e é ligeiramente diferente em cada canal. Para descobrir qual o alcance do seu receptor, abra o Serial Monitor no Arduino IDE para ver a saída do seu RX. Será semelhante a este:
canal 1: 728
canal 2: 729 canal 3: 703 canal 4: 726 canal 1: 1681 canal 2: 1639 canal 3: 1613 canal 4: 1676
Depois de ter uma ideia mais clara da faixa de saída de seu RX, escolha boas aproximações para hi e lo e altere as constantes de acordo. Em seguida, carregue o esboço para o Arduino novamente.
Etapa 7: calibrar o joystick emulado
Conecte o dispositivo ao seu computador e use a função de calibração do seu sistema operacional para calibrar o joystick emulado. Uma boa ferramenta para Linux é jstest-gtk.
Outras melhorias
- Escreva um código sem bloqueio (consulte a Etapa 3)
- Defina intervalos por canal, não globalmente (consulte a Etapa 6)
Leitura adicional
- Redcon CM703
- PPM