Étape 4: Assembler les pièces
Si vous avez compris pleinement tous les matériaux dans les étapes précédentes, vous devriez être capable d’écrire une interface de contrôleur-à-UART XBox ou implémenter une communication PC-Arduino sur votre propre.
Comme dernier exemple je vais utiliser un engin très simple : un Arduino avec quelques LEDs et le buzzer.
Initialement je voulais construire une petite voiture RC, mais je ne serai pas capable de le faire au moins pour une autre semaine ou deux en raison de longs délais dans la livraison de pièces... Si vous avez une paire de planches EasyDriver vous pouvez vous connecter direction NIP au lieu de la LED jaune et broche moteur étape au lieu de LEDs rouges (voir schéma ci-dessus). Un piezo-buzzer relié à la broche D3 réagit sur n’importe quel bouton sur votre contrôleur.
La description fonctionnelle complète se résume à ceci :
- Lire l’état du contrôleur XBox et la transformer en une chaîne courte, mais bien définie.
Dans mon cas je suis contente d’envoyer vitesses du moteur, de direction et d’État du bouton, donc le message ressemble à ceci :
RRR LLL D benamer
où LLL désigne la vitesse du moteur gauche, Err est la vitesse du moteur droit et BBBB représente le bouton État.
D est une direction du moteur, qui prend deux valeurs: 1 pour l’avant et de 0 pour vers l’arrière.
Les LLL et RRR seront normalisées pour deadzones et mise à l’échelle de valeurs plus petites (moins de 255)Alternativement, vous pouvez envoyer des données brutes de XINPUT pour arduino et traitez-le sur le microcontrôleur lui-même.
- Ensuite, nous envoyons ce message sur UART pour Arduino
- Toutes les vitesses du moteur la valeur des valeurs acquises et vérifier l’état du bouton afin de déterminer les mesures supplémentaires
- Envoyer des données vers le PC (je vous envoie juste des vitesses du moteur pour le débogage)
- Données acquises sont transformées en une représentation visuelle. Utilisez ce que vous voulez, que ce soit une sortie de texte simple dans la fenêtre de la console, ou basé sur l’interface de sortie, tels que des barres de progression, graphiques, diagrammes ou même rendu OpenGL.
Nous avons déjà appris à lire UART messages à l’aide d’événements, donc nous n’avez pas vraiment à vous soucier du bon timing. Le code côté PC peut encore être amélioré avec des choses cool, comme la communication multi-threading et asynchrone, mais nous ne fera qu’aujourd'hui.
Donc, commençons par Arduino.
Un simple croquis pour notre voiture RC est jointe. Rien de spécial, juste réglage des vitesses du moteur selon la position du stick analogique.
sqrt(LX*LX+ly*ly) définit la grandeur de la vitesse du moteur
LY sign(-or +) contrôle de la direction du mouvement (vers l’avant / vers l’arrière).
Basé sur la valeur de LX, nous avons mis la différence entre la vitesse du moteur gauche et droit. Si LX est positif, puis à gauche moteur est définie sur la valeur actuelle de la vitesse et uses(128-LX) moteur à droite. Si LX est négatif, nous assigner des valeurs le chemin inverse.
Côté PC, j’ai créé une petite classe, appelée XBoxUart, qui combine toutes les choses que nous avons appris précédemment dans un seul programme.
S’il vous plaît, utilisez les liens ci-dessous pour télécharger le code source pour le côté PC et Arduino.
Tout d’abord, téléchargez le croquis de l’arduino. Vous pouvez tester si cela fonctionne en ouvrant un Serial Monitor à 115200 DBO et envoi de données manuellement. Par exemple le message "100 100 1 0" est un équivalent de se déplacer vers l’avant 100 étapes (moteurs gauche et droit) avec aucune pression sur les boutons. En réponse, vous devriez obtenir des cordes, illustrés dans la capture d’écran ci-dessus.
Remarque : N’oubliez pas de changer le nom de port COM à tout ce qui est votre CDC Arduino. Si vous avez un module HC-05, vous pouvez le connecter directement aux broches Arduino RX et TX, si vous voulez essayer sans fils.
Vous pouvez maintenant compiler du code C++ dans Visual Studio, démarrez votre contrôleur de XBox, lancer le programme sur votre PC et voir comment les LEDs (ou moteurs) changent leur comportement avec le mouvement du stick analogique ! En appuyant sur n’importe quel bouton déclenche l’avertisseur sonore. La sortie dans la fenêtre de la console sera semblable à ce que vous voyez sur la dernière capture d’écran.