Constructeur de menu Arduino
Un encodeur rotatif est un type de capteur de position qui convertit la position angulaire (rotation) d’un bouton en un signal de sortie qui est utilisé pour déterminer dans quel sens le bouton est tourné. En raison de leur robustesse et de la finesse de leur contrôle numérique, ils sont utilisés dans de nombreuses applications, notamment la robotique, les machines CNC et les imprimantes. Il existe deux types de codeur rotatif : absolu et incrémental. L’encodeur absolu nous donne la position exacte du bouton en degrés, tandis que l’encodeur incrémental indique le nombre d’incréments de déplacement de l’arbre (pas).L’encodeur rotatif utilisé dans ce tutoriel est de type incrémental.
Dans l’exemple animé ci-dessous, vous pouvez voir comment fonctionne un encodeur. A l’intérieur de l’encodeur, nous avons quelques pastilles de cuivre (couleur marron dans l’animation). Ils sont connectés à GND. Ensuite, nous avons deux broches, horloge et données, avec un pullup à 5V. De cette façon, lorsque la broche est en circuit ouvert, elle sera “HIGH” ou 5V. En tournant, ces deux broches vont toucher les pastilles de cuivre, tirant la sortie vers GND puisque les pastilles sont directement connectées à GND. Ainsi, chaque fois que nous touchons une pastille de cuivre, nous avons une impulsion “LOW”. En comptant ces impulsions, nous pouvons compter les étapes. Si nous détectons 10 impulsions par exemple, alors le codeur a sauté 10 pastilles de cuivre. En connaissant le nombre de pastilles (pas) de l’encodeur, nous pouvons calculer l’angle de rotation.
Bibliothèque de menus Arduino oled
Vous vous êtes déjà demandé à quel point une interface utilisateur (IU) pouvait être simple pour votre prochain hack ou projet électronique ? En effet, et vous devriez également voir l’humble encodeur rotatif et un écran comme interface utilisateur pour une imprimante 3D ou d’autres gadgets. Dans ce tutoriel, nous allons voir comment construire un tel système avec un écran Nokia 5110 et un encodeur rotatif KY-040.
Vous pouvez utiliser tout autre afficheur de caractères ou graphique ainsi que d’autres modèles d’encodeurs. Au lieu de rendre le code générique, nous allons commencer à construire une interface utilisateur pour une horloge numérique. Sur son écran d’accueil, elle affichera l’heure. En appuyant sur le bouton de sélection de l’encodeur, le menu s’affichera. Le menu à son tour aura de nombreux paramètres pour l’heure, la date, le format de l’heure (12 heures ou 24 heures), le fuseau horaire etc..,
La connexion de base restera la même pendant toute la durée du tutoriel. Nous testerons d’abord l’encodeur, puis l’affichage. Vous pouvez vouloir connecter tous les éléments en même temps ou le faire étape par étape. L’encodeur d’abord et ensuite l’écran. Je vous recommande de le faire étape par étape.
Les codeurs sont d’excellents dispositifs d’entrée qui ont une course infinie dans le sens des aiguilles d’une montre (CW) et dans le sens inverse (CCW). Ce que cela signifie essentiellement, c’est que la plage d’entrée pour votre gadget peut être décidée dans le logiciel. Comme dans le cas de votre horloge, l’utilisateur peut avoir à parcourir un menu de 8 éléments. La plage du menu sera de 0 à 7 dans les deux sens. Cependant, pour saisir l’heure de l’utilisateur, les heures seront de (0 à 23), les minutes et les secondes de (0 à 60). Les encodeurs nous aideront à faire tout ce qui précède. En outre, l’encodeur que nous allons utiliser possède également un commutateur de sélection. Il peut être utilisé pour sélectionner des éléments de menu ou confirmer une action.
Structure du menu Arduino
Ceci est un remake de l’exemple de l’encodeur rotatif avec un écran LCD 16×2 avec une fonctionnalité supplémentaire : le mode veille. Il utilise la bibliothèque rotative de Ben Buxton avec la fonction bouton poussoir modifiée par Phill Fisk.
Un encodeur rotatif est un capteur de position qui est utilisé pour déterminer la position angulaire de l’arbre en rotation. Habituellement, un encodeur rotatif a 5 broches : 5V, GND, bouton poussoir, DT et CLK qui sont utilisées pour le Bit A et le Bit B. Le codeur utilise une séquence de code Gray où deux valeurs successives ne diffèrent que par un seul bit (chiffre binaire). Le code binaire réfléchi a été conçu à l’origine pour empêcher les sorties parasites des interrupteurs électromécaniques.
La méthode de base pour les décoder consiste à observer les bits qui changent. Par exemple, un changement de “00” à “10” indique une direction, tandis qu’un changement de “00” à “01” indique l’autre direction. La bibliothèque utilise un algorithme de machine à états finis (FSM) qui suit une séquence de code Gray. Le plus grand avantage de l’utilisation d’une machine à états par rapport à d’autres algorithmes est qu’elle possède un débordement inhérent intégré. D’autres algorithmes émettent des sorties parasites en cas de rebondissement du commutateur, mais celui-ci bascule simplement entre les sous-états jusqu’à ce que le rebond se stabilise, puis continue le long de la machine à états.
Sous-menu du menu de l’encodeur rotatif Arduino
J’ai souvent besoin d’implémenter la gestion de menus en tant qu’interface utilisateur pour régler des paramètres dans mes applications de contrôle Arduino pendant que l’application en arrière-plan continue de fonctionner. J’utilise également beaucoup les modules LCD à base de texte avec 1 ou 2 lignes d’affichage pour les informations sur l’état des commandes. La plupart des bibliothèques existantes ont trop de “cloches et de sifflets” pour cette situation, j’ai donc décidé de créer ma propre bibliothèque “encore un autre système de menu” qui simplifie ce dont j’ai besoin.
La structure de données arborescente est l’une des structures les plus évidentes utilisées pour représenter les menus. Dans les arbres, les informations forment naturellement une hiérarchie – les entrées de menu sont naturellement ordonnées au-dessus ou au-dessous des autres entrées. La structure de données arborescente est un moyen très efficace de représenter ce type d’informations. Bien qu’un arbre ait une structure hiérarchique intégrée, il peut être stocké sous forme de tableaux de données.
La structure illustrée ci-dessous est appelée arborescence parce que la représentation classique ressemble à un arbre, même si le graphique est généralement à l’envers par rapport à un arbre réel, avec la racine en haut et les feuilles en bas. Les éléments de l’arbre sont appelés nœuds. Les lignes reliant les nœuds sont appelées branches. Les nœuds sans sous-nœuds sont appelés nœuds feuilles, nœuds finaux, nœuds terminaux ou feuilles.