Table des matières:
- Étape 1: souder les en-têtes des broches aux ports d'E/S supplémentaires de l'Arduino
- Étape 2: ajoutez la bibliothèque Arduino Joystick à votre IDE
- Étape 3: Flashez le code sur l'Arduino
- Étape 4: faire le câblage
- Étape 5: Liez le récepteur
- Étape 6: Adaptez le code à votre situation
- Étape 7: Calibrer le joystick émulé
Vidéo: Pont R/C vers USB : 7 étapes
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Convertit les signaux PPM d'un récepteur radio en positions de joystick
Utilisez-le pour jouer à vos jeux et simulateurs de vol préférés avec votre émetteur radio R/C. Ce Instructable utilise un Arduino de littleBits et un récepteur DSMX ainsi qu'un simple extrait de code pour effectuer cette conversion.
Tu auras besoin de
- Puissance
- Arduino
- Câbles USB
- en-têtes de broche
- cavalier
- un récepteur radio avec sortie PPM.
Étape 1: souder les en-têtes des broches aux ports d'E/S supplémentaires de l'Arduino
Afin d'alimenter le récepteur (RX), des en-têtes de broche doivent être ajoutés à l'Arduino. Cela facilitera également le câblage entre le Bit et le RX. Voir https://discuss.littlebits.cc/t/using-the-additional-i-os-on-the-arduino-bit pour plus d'informations.
Étape 2: ajoutez la bibliothèque Arduino Joystick à votre IDE
Vous pouvez trouver la bibliothèque sur GitHub, https://github.com/MHeironimus/ArduinoJoystickLib… Merci, Matthew Heironimus, de l'avoir écrit.
Seuls certains Arduinos peuvent émuler un HID comme un joystick. Comme le microcontrôleur littleBits est un Arduino Leonardo dans l'âme, vous êtes prêt à partir.
Étape 3: Flashez le code sur l'Arduino
#include #define inputPin 16#define channels 4 #define lo 800 //ajustement à la sortie de RX#define hi 1600 //ajustement à la sortie de RX#define filter 10int channel[channels]; int valeur précédente[canaux]; int counter = 0;Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0, 0, true, true, false, false, false, false, true, true, false, false, false);void setup(){ Joystick.setXAxisRange(lo, salut); Joystick.setYAxisRange(lo, salut); Joystick.setThrottleRange(bas, salut); Joystick.setRudderRange(lo, salut); Joystick.begin(); Serial.begin(9600); pinMode(inputPin, INPUT); }void loop(){ if(pulseIn(inputPin, HIGH) > 3000) { for(int i = 0; i <= channels-1; i++) { channel=pulseIn(inputPin, HIGH); } for(int i = 0; i <= channels-1; i++) { if((channel > 2000) || (channel <500)) { channel = previousValue; } else { channel = (previousValue+channel)/2; compteur++; } } Joystick.setXAxis(canal[0]); Joystick.setYAxis(canal[1]); Joystick.setThrottle(canal[2]); Joystick.setRudder(canal[3]); } if(compteur > filtre) { for(int i = 0; i <= canaux-1; i++) { Serial.print("canal "); Serial.print(i+1); Serial.print(": "); Serial.println(canal); Valeur précédente=canal; } compteur=0; } }
Veuillez noter que le code qui fait le pont entre le signal R/C et le HID USB émulé se présente sous sa forme la plus simple. La fonction utilisée ici – pulseIn – est une fonction de blocage. Lisez ici et ici comment implémenter une approche non bloquante à l'aide d'interruptions.
Étape 4: faire le câblage
Connectez le fil de liaison / les câbles DuPont entre le Bit et le RX. Les connecteurs à l'extrémité de ces câbles doivent être femelles. Nous connectons GND (bleu), VCC (marron) et le signal (orange) du port PPM du RX à GND, VCC et d16 sur l'Arduino.
Étape 5: Liez le récepteur
Débranchez l'Arduino de l'alimentation. Mettez le harnais de fixation dans l'emplacement du connecteur marqué BIND sur le RX. Allumez votre émetteur radio et passez-le en mode affectation. Ensuite, mettez l'Arduino sous tension. Le processus de liaison a réussi lorsque la LED du récepteur s'allume.
Étape 6: Adaptez le code à votre situation
Les constantes hi et lo dans l'esquisse Arduino doivent être modifiées pour refléter la sortie réelle du récepteur que vous utilisez.
#définir lo 800
#définir salut 1600
Les signaux à l'intérieur de l'impulsion PPM vont idéalement de 1000μs à 2000μs. Le RX utilisé dans ce Instructable produit des valeurs approximativement entre 800 et 1600 et est légèrement différent sur chaque canal. Pour connaître la portée de votre récepteur, ouvrez le moniteur série dans l'IDE Arduino pour voir la sortie de votre RX. Cela ressemblera à ceci:
canal 1: 728
canal 2: 729 canal 3: 703 canal 4: 726 canal 1: 1681 canal 2: 1639 canal 3: 1613 canal 4: 1676
Une fois que vous avez une idée plus précise de la plage de sortie de votre RX, choisissez de bonnes approximations pour hi et lo et modifiez les constantes en conséquence. Ensuite, téléchargez à nouveau le croquis sur l'Arduino.
Étape 7: Calibrer le joystick émulé
Connectez l'appareil à votre ordinateur et utilisez la fonction de calibrage de votre système d'exploitation pour calibrer le joystick émulé. Un bon outil pour Linux est jstest-gtk.
Autres améliorations
- Écrivez du code non bloquant (voir étape 3)
- Définir des plages par canal, pas globalement (voir étape 6)
Lectures complémentaires
- Redcon CM703
- PPM