Parmi les composants électroniques de contrôle de l’utilisateur, les boutons rotatifs sont parmi les plus agréables à utiliser. Ils peuvent compléter les écrans tactiles et d’autres dispositifs d’entrée, tout en fonctionnant bien avec des boutons et des interrupteurs. Mais comment ajouter un bouton à vos propres projets DIY Arduino ?
Deux options principales s’offrent à vous : un potentiomètre ou un encodeur rotatif. Ces composants se ressemblent, mais les méthodes pour les utiliser avec un dispositif tel qu’une carte de microcontrôleur Arduino sont très différentes. Voyons comment ils se comparent l’un à l’autre.
Potentiomètres et encodeurs rotatifs
La plupart des potentiomètres et des encodeurs rotatifs que les bricoleurs rencontreront se présentent sous une forme similaire. Ils ont une base cubique ou cylindrique à laquelle sont attachées des pattes de connexion, ainsi qu’une tige ronde qui se tord et présente des découpes pour accueillir un capuchon.
Certains potentiomètres ont un aspect différent, notamment ceux qui se présentent sous la forme de longues glissières, comme ceux que l’on trouve sur les tables de mixage. En ce qui concerne les potentiomètres rotatifs, cependant, à première vue, ils sont presque identiques aux encodeurs rotatifs, de sorte que l’on peut penser qu’il s’agit de la même chose.
Qu’est-ce qu’un potentiomètre ?
Un potentiomètre est essentiellement une résistance variable. Lorsque l’on tourne l’arbre, la résistance à l’intérieur du potentiomètre change, ce qui permet à l’utilisateur de modifier les propriétés d’un circuit sans avoir à le reconstruire. Les potentiomètres peuvent être analogiques ou numériques, mais les potentiomètres numériques imitent les potentiomètres analogiques, ce qui rend leur utilisation très similaire.
Les potentiomètres ont toujours un point de départ et un point d’arrivée définis où l’arbre ne peut plus être tourné. Certains potentiomètres ont un aspect bosselé lorsqu’on les tourne, mais beaucoup sont également lisses, comme ceux que l’on trouve sur les vieilles chaînes stéréo.
Bien qu’ils soient analogiques, les potentiomètres fonctionnent bien avec les microcontrôleurs. Vous pouvez facilement configurer un potentiomètre avec un Raspberry Pi Pico ou un Arduino.
Qu’est-ce qu’un encodeur rotatif ?
Les codeurs rotatifs déterminent la position de leur arbre à l’aide d’un capteur qui fournit un signal analogique ou numérique à l’appareil auquel ils sont connectés. Ce signal indique à l’appareil la position dans laquelle se trouve le codeur. Outre l’arbre rotatif, les codeurs rotatifs sont généralement dotés d’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 présentent 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, l’utilisation d’un potentiomètre avec un Arduino est simple. Votre potentiomètre possède trois connecteurs : ground, output 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 du potentiomètre Arduino
Le code de votre potentiomètre Arduino commence par le code de base setup() et loop() que vous verrez lorsque vous créerez un nouveau fichier dans l’IDE Arduino. Tout d’abord, ajoutez un const int au début du code pour enregistrer la connexion de la broche analogique du pot – dans ce cas, A0.
const int potentiometer = A0;
Ensuite, la fonction setup() est simple : il suffit de déclarer la broche de votre potentiomètre comme une entrée. Vous pouvez également établir une connexion série si vous souhaitez envoyer des données à votre PC à des fins de diagnostic.
void setup() {
pinMode(potentiometer, INPUT);
Serial.begin(9600);
}
Ensuite, il est temps de mettre en place la fonction loop() fonction. Commencez par créer un int à l’aide de la variable analogRead() pour enregistrer la position de votre potentiomètre. Ensuite, vous pouvez utiliser la fonction map() pour réduire la taille de la valeur que vous traitez – 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é.
void loop() {
int potentiometerValue = analogRead(potentiometer);
map(potentiometerValue, 0, 1023, 0, 255);
Serial.println(potentiometerValue);
delay(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 fonctionnerait bien pour déclencher du code lorsque le potentiomètre est dans une position spécifique.
const int potentiometer = A0;
void setup() {
pinMode(potentiometer, INPUT);
Serial.begin(9600);
}
void loop() {
int potentiometerValue = analogRead(potentiometer);
map(potentiometerValue, 0, 1023, 0, 255);
Serial.println(potentiometerValue);
delay(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 tout de même assez faciles à utiliser. Votre encodeur rotatif possède cinq broches : la masse, VCC, une broche bouton (SW), la sortie A (CLK), et la sortie B (DT). Les broches ground et VCC se connectent respectivement aux connecteurs ground et 5V de votre Arduino, tandis que les broches SW, CLK, et BT se connectent aux connecteurs numériques individuels de l’Arduino.
Code de l’encodeur rotatif Arduino
Pour rendre notre code plus simple et plus facile à utiliser, nous allons utiliser la bibliothèque SimpleRotary Arduino créée par MPrograms sur GitHub. Assurez-vous d’avoir installé cette bibliothèque avant de commencer à travailler sur votre code.
Tout comme le code de votre potentiomètre, vous pouvez commencer votre script d’encodeur rotatif avec le code de base Arduino setup() et loop() modèle de fonction. Commencez par déclarer la bibliothèque SimpleRotary et assignez les broches de votre encodeur dans l’ordre suivant : CLK, DT et SW.
#include
SimpleRotary rotary(1,2,3);
Vous n’avez pas besoin d’ajouter quoi que ce soit à votre fichier setup() sauf si vous souhaitez utiliser le moniteur série pour diagnostiquer votre encodeur rotatif.
void setup() {
Serial.begin(9600);
}
La fonction boucle() est une autre histoire. La détermination de la rotation de l’arbre du codeur commence par une fonction rotary.rotate() qui est assigné à un appel de fonction int variable. Si le résultat est 1, le codeur tourne dans le sens des aiguilles d’une montre. Si le résultat est 2, le codeur tourne dans le sens inverse des aiguilles d’une montre. Le résultat sera toujours 0 si le codeur n’a pas tourné depuis la dernière vérification.
Vous pouvez utiliser si pour déclencher d’autres codes en fonction du sens de rotation de l’encodeur.
void loop(){
int encoderRotation;
encoderRotation = rotary.rotate();
if (encoderRotation == 1) {
Serial.println("clockwise");
}
if (encoderRotation == 2) {
Serial.println("counter-clockwise");
}
}
Vous devez également ajouter du code pour le bouton de votre encodeur dans le fichier loop() . Ce processus est très similaire, sauf que vous utiliserez la fonction rotary.push() plutôt que la fonction rotary.rotate().
void loop(){
int encoderButton;
encoderButton = rotary.push();
if (encoderButton == 1) {
Serial.println("button pressed");
}
}
Ce script est assez simple, et vous pouvez faire beaucoup de choses pour vous l’approprier. Il vaut la peine de consulter la documentation du projet SimpleRotary pour s’assurer que vous utilisez toutes ses fonctionnalités clés. Une fois assemblé, votre code d’encodage devrait ressembler à ceci.
#include
SimpleRotary rotary(1,2,3);
void setup() {
Serial.begin(9600);
}
void loop(){
int encoderRotation;
encoderRotation = rotary.rotate();
if (encoderRotation == 1) {
Serial.println("clockwise");
}
if (encoderRotation == 2) {
Serial.println("counter-clockwise");
}
int encoderButton;
encoderButton = rotary.push();
if (encoderButton == 1) {
Serial.println("button pressed");
}
}
Comment choisir entre les potentiomètres et les encodeurs rotatifs pour les projets
Comme vous pouvez le constater, les encodeurs rotatifs et les potentiomètres fonctionnent de manière très différente. Ces deux composants vous offrent de nouveaux moyens de contrôler vos projets électroniques, mais lequel choisir ?
Les potentiomètres sont abordables et faciles à utiliser, mais ils ne permettent qu’une plage d’entrée limitée. Ils sont donc parfaits pour contrôler la luminosité d’une LED, ou pour augmenter ou diminuer la puissance de certains composants, ainsi que pour d’autres tâches similaires.
Les encodeurs rotatifs offrent beaucoup plus de possibilités que les potentiomètres. L’inclusion d’un bouton-poussoir signifie qu’ils sont parfaits pour les systèmes de commande de menu, comme on en voit dans de nombreuses voitures modernes. Ce type de composant est devenu très populaire dans le domaine de la construction de claviers mécaniques. Vous pouvez même construire un petit macropad avec un encodeur intégré.
Un aspect similaire, des composants différents
Avec toutes ces informations en main, vous devriez être prêt à démarrer un projet électronique avec un potentiomètre ou un encodeur rotatif. Ces composants peuvent vous permettre de contrôler les circuits que vous construisez, mais vous devez vous assurer que vous choisissez la bonne option pour votre projet.