- Matériel requis
- Comprendre le module Joystick:
- Schéma:
- Programmation pour l'interfaçage du joystick:
- Vue de simulation:
- Matériel et fonctionnement:
Les périphériques d'entrée jouent un rôle essentiel dans tous les projets électroniques. Ces périphériques d'entrée aident l'utilisateur à interagir avec le monde numérique. Un périphérique d'entrée peut être aussi simple qu'un bouton poussoir ou aussi compliqué qu'un écran tactile; il varie en fonction des exigences du projet. Dans ce tutoriel, nous allons apprendre à interfacer un joystick avec notre microcontrôleur PIC, un joystick est un moyen sympa d'interagir avec le monde numérique et presque tout le monde en aurait utilisé un pour jouer à des jeux vidéo à l'âge de l'adolescence.
Un joystick peut sembler être un appareil sophistiqué, mais ce n'est en fait qu'une combinaison de deux potentiomètres et d'un bouton-poussoir. Par conséquent, il est également très facile de s'interfacer avec n'importe quel MCU à condition que nous sachions comment utiliser la fonction ADC de ce MCU. Nous avons déjà appris à utiliser ADC avec PIC, il ne s'agirait donc que d'un travail d'interface avec le joystick. Il est recommandé aux personnes qui débutent dans le pickit d'apprendre le projet ADC ci-dessus ainsi que le projet de séquence de clignotement des LED pour faciliter la compréhension du projet.
Matériel requis
- PicKit 3 pour la programmation
- Module Joy Stick
- PIC16F877A IC
- Support IC à 40 broches
- Conseil Perf
- OSC cristal 20 MHz
- Épingles Bergstik
- Résistance 220ohm
- 5 LED de n'importe quelle couleur
- 1 kit de soudure
- IC 7805
- Adaptateur 12V
- Fils de connexion
- Planche à pain
Comprendre le module Joystick:
Les joysticks sont disponibles en différentes formes et tailles. Un module Joystick typique est illustré dans la figure ci-dessous. Un joystick n'est rien de plus que quelques potentiomètres et un bouton poussoir montés sur un agencement mécanique intelligent. Le potentiomètre est utilisé pour suivre le mouvement X et Y du joystick et le bouton est utilisé pour détecter si le joystick est enfoncé. Les deux potentiomètres délivrent une tension analogique qui dépend de la position du joystick. Et nous pouvons obtenir la direction du mouvement en interprétant ces changements de tension à l'aide d'un microcontrôleur. Auparavant, nous avons interfacé Joystick avec AVR, Joystick avec Arduino et Raspberry Pi.
Avant d'interfacer un capteur ou un module avec un microcontrôleur, il est important de savoir comment il fonctionne. Ici, notre joystick a 5 broches de sortie dont deux pour l'alimentation et trois pour les données. Le module doit être alimenté avec + 5V. Les broches de données sont nommées VRX, VRY et SW.
Le terme «VRX» signifie tension variable sur l'axe X et le terme «VRY» signifie tension variable sur l'axe Y et «SW» signifie interrupteur.
Ainsi, lorsque nous déplaçons le joystick vers la gauche ou la droite, la valeur de tension sur VRX variera et lorsque nous la faisons varier vers le haut ou vers le bas, VRY variera. De même, lorsque nous le déplaçons en diagonale, VRX et VRY varieront. Lorsque nous appuyons sur l'interrupteur, la broche SW sera connectée à la terre. La figure ci-dessous vous aidera à mieux comprendre les valeurs de sortie
Schéma:
Maintenant que nous savons comment fonctionne le joystick, nous pouvons arriver à la conclusion que nous aurons besoin de deux broches ADC et d'une broche d'entrée numérique pour lire les trois broches de données du module Joystick. Le schéma de circuit complet est montré dans l'image ci-dessous
Comme vous pouvez le voir sur le schéma de circuit, au lieu du joystick, nous avons utilisé deux potentiomètres RV1 et RV3 comme entrées de tension analogiques et une entrée logique pour le commutateur. Vous pouvez suivre les étiquettes écrites en couleur violette pour correspondre aux noms des broches et établir vos connexions en conséquence.
Notez que les broches analogiques sont connectées aux canaux A0 et A1 et que le commutateur numérique est connecté à RB0. Nous aurons également 5 lumières LED connectées en sortie, afin que nous puissions en allumer une en fonction de la direction dans laquelle le joystick est déplacé. Ainsi, ces broches de sortie sont connectées au PORT C de RC0 à RC4. Une fois que nous avons parcouru notre schéma de circuit, nous pouvons procéder à la programmation, puis simuler le programme sur ce circuit, puis construire le circuit sur une maquette, puis télécharger le programme sur le matériel. Pour vous donner une idée, mon matériel après avoir effectué les connexions ci-dessus est illustré ci-dessous
Programmation pour l'interfaçage du joystick:
Le programme d'interface joystick avec PIC est simple et direct. Nous savons déjà à quelles broches le joystick est connecté et quelle est leur fonction, nous devons donc simplement lire la tension analogique des broches et contrôler les LED de sortie en conséquence.
Le programme complet pour ce faire est donné à la fin de ce document, mais pour expliquer les choses, je décompose le code en petits extraits significatifs ci-dessous.
Comme toujours le programme est démarré en définissant les bits de configuration, nous n'allons pas beaucoup discuter de la définition des bits de configuration car nous l'avons déjà appris dans le projet LED Blinking et il en va de même pour ce projet également. Une fois les bits de configuration définis, nous devons définir les fonctions ADC pour l'utilisation du module ADC dans notre PIC. Ces fonctions ont également été apprises dans le didacticiel sur l'utilisation de l'ADC avec PIC. Après cela, nous devons déclarer quelles broches sont des entrées et lesquelles sont des broches de sortie. Ici, la LED est connectée au PORTC, ce sont donc des broches de sortie et la broche de commutation du joystick est une broche d'entrée numérique. Nous utilisons donc les lignes suivantes pour déclarer la même chose:
// ***** Configuration d'E / S **** // TRISC = 0X00; // PORT C est utilisé comme ports de sortie PORTC = 0X00; // Rend toutes les broches basses TRISB0 = 1; // RB0 est utilisé comme entrée // *** Fin de la configuration des E / S ** ///
Les broches ADC n'ont pas besoin d'être définies comme broches d' entrée car elles seront affectées comme broches d'entrée lors de l'utilisation de la fonction ADC. Une fois les broches définies, nous pouvons appeler la fonction ADC_initialize que nous avons définie précédemment. Cette fonction définira les registres ADC requis et préparera le module ADC.
ADC_Initialize (); // Configurer le module ADC
Maintenant, nous entrons dans notre boucle while infinie. À l'intérieur de cette boucle, nous devons surveiller les valeurs de VRX, VRY et SW et en fonction des valeurs, nous devons contrôler la sortie de la led. Nous pouvons commencer le processus de surveillance en lisant la tension analogique de VRX et VRY en utilisant les lignes ci-dessous
int joy_X = (ADC_Read (0)); // Lire l'axe X du joystick int joy_Y = (ADC_Read (1)); // Lire l'axe Y du joystick
Cette ligne sauvegardera la valeur de VRX et VRY respectivement dans les variables joy_X et joy_Y . La fonction ADC_Read (0) signifie que nous lisons la valeur ADC du canal 0 qui est la broche A0. Nous avons connecté VRX et VRY aux broches A0 et A1 et nous lisons donc de 0 à 1.
Si vous pouvez vous souvenir de notre tutoriel ADC, nous savons que nous lisons la tension analogique, le PIC étant un appareil numérique, la lira de 0 à 1023. Cette valeur dépend de la position du module de joystick. Vous pouvez utiliser le diagramme d'étiquettes ci-dessus pour savoir à quelle valeur vous pouvez vous attendre pour chaque position du joystick.
Ici, j'ai utilisé la valeur limite de 200 comme limite inférieure et une valeur de 800 comme limite supérieure. Vous pouvez utiliser tout ce que vous voulez. Alors utilisons ces valeurs et commençons à allumer les LED en conséquence. Pour ce faire, nous devons comparer la valeur de joy_X avec les valeurs prédéfinies en utilisant une boucle IF et rendre les broches LED hautes ou basses comme indiqué ci-dessous. Les lignes de commentaires vous aideront à mieux comprendre
if (joy_X <200) // Joy s'est déplacé vers le haut {RC0 = 0; RC1 = 1;} // LED supérieure allumée sinon si (joy_X> 800) // Joy déplacé vers le bas {RC0 = 1; RC1 = 0;} // Glow Lower LED else // Si non déplacé {RC0 = 0; RC1 = 0;} // Éteint les deux led
Nous pouvons également faire de même pour la valeur de l'axe Y. Nous devons juste remplacer la variable joy_X par joy_Y et contrôler également les deux broches LED suivantes comme indiqué ci-dessous. Notez que lorsque le joystick n'est pas déplacé, nous éteignons les deux voyants LED.
if (joy_Y <200) // Joy s'est déplacée vers la gauche {RC2 = 0; RC3 = 1;} // LED allumée à gauche sinon si (joy_Y> 800) // Joy déplacé à droite {RC2 = 1; RC3 = 0;} // LED Glow Right else // Si non déplacé {RC2 = 0; RC3 = 0;} // Éteint les deux LED
Maintenant, nous avons une dernière chose à faire, nous devons vérifier le commutateur s'il est enfoncé. La broche du commutateur est connectée à RB0 afin que nous puissions à nouveau utiliser la boucle if et vérifier si elle est activée. Si elle est enfoncée, nous éteindrons la LED pour indiquer que l'interrupteur a été enfoncé.
if (RB0 == 1) // Si Joy est pressé RC4 = 1; // LED centrale allumée sinon RC4 = 0; // LED centrale OFF
Vue de simulation:
Le projet complet peut être simulé à l'aide du logiciel Proteus. Une fois que vous avez écrit le programme, compilez le code et liez le code hexadécimal de la simulation au circuit. Ensuite, vous devriez remarquer que les voyants LED s'allument en fonction de la position des potentiomètres. La simulation est présentée ci-dessous:
Matériel et fonctionnement:
Après avoir vérifié le code à l'aide de la simulation, nous pouvons construire le circuit sur une planche à pain. Si vous avez suivi les tutoriels PIC, vous auriez remarqué que nous utilisons la même carte de performance sur laquelle sont soudés le circuit PIC et 7805. Si vous souhaitez également en créer un afin de l'utiliser avec tous vos projets PIC, soudez le circuit sur une carte de performance. Ou vous pouvez également construire le circuit complet sur une maquette. Une fois le matériel terminé, ce serait quelque chose comme ceci ci-dessous.
Téléchargez maintenant le code sur le microcontrôleur PIC à l'aide du PICkit3. Vous pouvez consulter le projet LED Blink pour obtenir des conseils. Vous devriez remarquer que la lumière jaune devient élevée dès que le programme est téléchargé. Maintenant, utilisez le joystick et faites varier le bouton, pour chaque direction du joystick, vous remarquerez que la LED respective devient haute. Lorsque l'interrupteur au milieu est enfoncé, il éteindra la LED au milieu.
Ce travail n'est qu'un exemple, vous pouvez construire de nombreux projets intéressants en plus. Le fonctionnement complet du projet peut également être trouvé sur la vidéo donnée à la fin de cette page.
J'espère que vous avez compris le projet et que vous avez apprécié sa construction, si vous rencontrez un problème pour le faire, n'hésitez pas à le publier dans la section commentaires ci-dessous ou à l'écrire sur les forums pour obtenir de l'aide.