Les potentiomètres et les encodeurs rotatifs semblent presque identiques à première vue, mais ils fonctionnent de différentes manières. Découvrez comment utiliser les deux avec un Arduino.

Parmi les composants électroniques de contrôle de l'utilisateur, les boutons rotatifs se distinguent comme l'un des plus satisfaisants à utiliser. Ils peuvent compléter les écrans tactiles et autres périphériques d'entrée, tout en fonctionnant bien avec les boutons et les commutateurs. Mais comment pouvez-vous ajouter un bouton à vos propres projets DIY Arduino ?

Vous avez deux options principales: un potentiomètre ou un encodeur rotatif. Ces composants peuvent sembler similaires, mais les méthodes pour les utiliser avec un appareil comme une carte de microcontrôleur Arduino sont très différentes. Voyons comment ils se comparent les uns aux autres.

Potentiomètres vs. Encodeurs rotatifs

La plupart des potentiomètres et encodeurs rotatifs que les bricoleurs rencontreront se présentent sous un facteur de forme similaire. Ils ont une base cuboïde ou cylindrique avec des pattes de connecteur attachées et un arbre rond qui se tord et a des découpes pour qu'un capuchon puisse s'asseoir.

instagram viewer

Certains potentiomètres ont un aspect différent, comme ceux qui se présentent sous la forme de longues diapositives, comme ceux que l'on trouve sur les platines de mixage de musique. En ce qui concerne le type rotatif, cependant, à première vue, ils semblent presque identiques aux encodeurs rotatifs, vous seriez donc pardonné de penser qu'ils sont identiques.

Qu'est-ce qu'un potentiomètre ?

Un potentiomètre est essentiellement une résistance variable. Lorsque l'arbre est tourné, la résistance à l'intérieur du potentiomètre change, permettant à un utilisateur de modifier les propriétés d'un circuit sans avoir à le reconstruire. Les potentiomètres peuvent être à la fois analogiques et numériques, mais les potentiomètres numériques imitent les potentiomètres analogiques, ce qui les rend très similaires à utiliser.

Les potentiomètres ont toujours un point de départ et un point final définis où l'arbre ne peut plus être tourné. Certains potentiomètres ont une sensation cahoteuse lorsqu'ils sont tournés, mais beaucoup sont également lisses, comme ceux que l'on trouve sur les anciennes chaînes stéréo.

Bien qu'ils soient analogiques, les potentiomètres fonctionnent bien avec les microcontrôleurs. Vous pouvez facilement mettre en place un potentiomètre avec un Raspberry Pi Pico ou Arduino.

Qu'est-ce qu'un encodeur rotatif ?

Les encodeurs rotatifs déterminent la position de leur arbre à l'aide d'un capteur pour fournir un signal analogique ou numérique à l'appareil auquel ils sont connectés. Cela indique à l'appareil dans quelle position se trouve l'encodeur. En plus de l'arbre rotatif, les codeurs rotatifs ont généralement aussi un bouton intégré qui est actionné en poussant l'arbre vers le bas.

Contrairement aux potentiomètres, les encodeurs rotatifs peuvent tourner sans s'arrêter, et ils ont presque toujours des bosses tactiles pour chacune des positions de l'arbre. De nombreuses voitures modernes utilisent des encodeurs rotatifs pour contrôler leurs systèmes de divertissement.

Comment utiliser un potentiomètre avec un Arduino

Grâce à leur conception simple, utiliser un potentiomètre avec un Arduino est simple. Votre potentiomètre a trois connecteurs: masse, sortie et vref. Les broches de masse et vref se connectent respectivement aux connecteurs GND et 5V de votre Arduino, tandis que la broche de sortie du potentiomètre se connecte à l'une des entrées analogiques de votre carte.

Code potentiomètre Arduino

Votre code de potentiomètre Arduino commence par la base installation() et boucle() modèle que vous verrez lorsque vous créerez un nouveau fichier dans l'IDE Arduino. Tout d'abord, ajoutez un const entier variable au début du code pour enregistrer la connexion de la broche analogique du pot, dans ce cas, A0.

constanteentier potentiomètre = A0 ;

Suite à cela, le installation() fonction est simple: il vous suffit de déclarer la broche de votre potentiomètre en entrée. Vous pouvez également démarrer une connexion série si vous souhaitez envoyer des données à votre PC pour le diagnostic.

annulerinstallation(){
pinMode (potentiomètre, INPUT);
En série.commencer(9600);
}

Ensuite, il est temps de configurer le boucle() fonction. Commencez par créer un entier variables à l'aide de la lectureanalogique() fonction pour mémoriser la position de votre potentiomètre. Suite à cela, vous pouvez utiliser le carte() pour réduire la taille de la valeur à laquelle vous avez affaire, dans cet exemple pour correspondre aux spécifications PWM, par exemple pour contrôler la luminosité d'une LED. Ajoutez un court délai pour assurer la stabilité.

annulerboucle(){
entier potentiometerValue = analogRead (potentiomètre);
carte (potentiomètreValue, 0, 1023, 0, 255);
En série.println(potentiomètreValeur);
retard (10);
}

Maintenant que vous avez la position de votre potentiomètre, vous pouvez l'utiliser avec d'autres parties du code. Par exemple, un si La déclaration fonctionnerait bien pour déclencher le code lorsque le potentiomètre est dans une position spécifique.

constanteentier potentiomètre = A0 ;

annulerinstallation(){
pinMode (potentiomètre, INPUT);
En série.commencer(9600);
}

annulerboucle(){
entier potentiometerValue = analogRead (potentiomètre);
carte (potentiomètreValue, 0, 1023, 0, 255);
En série.println(potentiomètreValeur);
retard (10);
}

Comment utiliser un encodeur rotatif avec un Arduino

Les encodeurs rotatifs nécessitent un code plus complexe que les potentiomètres, mais ils sont toujours assez faciles à utiliser. Votre encodeur rotatif a cinq broches: la masse, VCC, une broche de bouton (SW), la sortie A (CLK) et la sortie B (DT). Les broches de masse et VCC se connectent respectivement aux connecteurs de masse et 5V de votre Arduino, tandis que les broches SW, CLK et BT se connectent à des connecteurs numériques individuels sur l'Arduino.

Code de l'encodeur rotatif Arduino

Pour rendre notre code plus simple et plus facile à utiliser, nous utiliserons la bibliothèque SimpleRotary Arduino créée par MPrograms sur GitHub. Assurez-vous que cette bibliothèque est installée avant de commencer à travailler sur votre code.

Tout comme votre code de potentiomètre, vous pouvez démarrer votre script d'encodeur rotatif avec l'Arduino de base installation() et boucle() modèle de fonction. Commencez par déclarer la bibliothèque SimpleRotary et affectez vos broches d'encodeur dans cet ordre; CLK, DT et SW.

#inclure 
SimpleRotatif rotatif(1,2,3);

Vous n'avez rien à ajouter à votre installation() sauf si vous souhaitez utiliser le moniteur série pour diagnostiquer votre encodeur rotatif.

annulerinstallation(){
En série.commencer(9600);
}

Le boucle() la fonction est une autre histoire. La détermination de la rotation de l'arbre du codeur commence par un rotatif.rotate() appel de fonction affecté à un entier variable. Si le résultat est 1, l'encodeur tourne dans le sens des aiguilles d'une montre. Si le résultat est 2, l'encodeur tourne dans le sens inverse des aiguilles d'une montre. Le résultat sera toujours 0 si l'encodeur n'a pas tourné depuis la dernière vérification.

Vous pouvez utiliser si instructions pour déclencher un autre code en fonction du sens de rotation de l'encodeur.

annulerboucle(){
entier encodeurRotation ;
encodeurRotation = rotatif.rotate();

si (encodeurRotation == 1) {
Serial.println("dans le sens des aiguilles d'une montre");
}

si (encodeurRotation == 2) {
Serial.println("sens anti-horaire");
}
}

Vous devez également ajouter du code pour le bouton de votre encodeur au boucle() fonction. Ce processus est très similaire, sauf que vous utiliserez le rotatif.pousser() fonction, plutôt que rotatif.rotate().

annulerboucle(){
entier encodeurBouton ;
encoderButton = rotatif.push();

si (encoderButton == 1) {
Serial.println("bouton appuyé");
}
}

Ce script est assez simple et vous pouvez faire beaucoup pour vous l'approprier. Cela vaut la peine de consulter la documentation du projet SimpleRotary pour vous assurer que vous utilisez toutes ses fonctionnalités clés. Une fois assemblé, votre code d'encodeur devrait ressembler à ceci.

#inclure 
SimpleRotatif rotatif(1,2,3);

annulerinstallation(){
En série.commencer(9600);
}

annulerboucle(){
entier encodeurRotation ;
encodeurRotation = rotatif.rotate();

si (encodeurRotation == 1) {
Serial.println("dans le sens des aiguilles d'une montre");
}

si (encodeurRotation == 2) {
Serial.println("sens anti-horaire");
}

entier encodeurBouton ;
encoderButton = rotatif.push();

si (encoderButton == 1) {
Serial.println("bouton appuyé");
}
}

Comment choisir entre potentiomètres et encodeurs rotatifs pour les projets

Comme vous pouvez le constater, les encodeurs rotatifs et les potentiomètres fonctionnent de manière assez différente. Ces deux composants vous offrent de nouvelles façons de contrôler vos projets électroniques, mais lequel choisir ?

Les potentiomètres sont abordables et faciles à utiliser, mais ne permettent qu'une plage d'entrée limitée. Cela les rend parfaits lorsque vous souhaitez contrôler la luminosité d'une LED, ou augmenter et réduire la puissance allant à des composants spécifiques, et d'autres tâches similaires.

Les encodeurs rotatifs offrent beaucoup plus de portée que les potentiomètres. L'inclusion d'un bouton-poussoir signifie qu'ils sont parfaits pour les systèmes de contrôle de menu, comme on le voit dans de nombreuses voitures modernes. Ce type de composant est devenu très populaire dans l'espace de construction de claviers mécaniques. Vous pouvez même construire un petit macropad avec un encodeur intégré.

Aspect similaire, composants différents

Avec toutes ces informations à votre actif, vous devriez être prêt à vous lancer dans un projet électronique avec un potentiomètre ou un encodeur rotatif. Ces composants peuvent vous donner beaucoup de contrôle sur les circuits que vous construisez, mais vous devez vous assurer que vous choisissez la bonne option pour votre projet.