Encodeurs rotatifs avec centre - boutons-poussoirs sont cool d’entrée matériel pour les projets, surtout si vous voulez être en mesure de faire défiler les menus et sélectionnez options. J’espère que ce Instructable vous donnera la confiance nécessaire pour essayer un système de menu de base et combinez-le avec une molette pour donner une impression professionnelle à votre prochain projet!
Pourquoi les menus et les encodeurs rotatifs besoin code
Je voulais avoir un menu dans un projet à venir et utiliser un codeur rotatif avec un bouton poussoir de centre comme mon matériel d’entrée. C’est vraiment similaire à la contrôleurs d’écran LCD pour rampes et Arduino MEGA imprimantes 3D. La molette va me permettre de faire défiler les options du menu, savoir naviguer dans le menu, sélectionnez des sous-menus et également modifier des valeurs dans des sous-sous-menus/paramètres - très polyvalents pour une interface matérielle ! Un microcontrôleur est nécessaire pour gérer tout cela et microcontrôleurs besoin d’instructions, AKA code!
Autres options
Le problème, j’ai eu avec des bibliothèques existantes de menu Arduino et code de menu n’est que pour les menus simples, ils étaient trop compliqués. Un autre inconvénient de nombreuses alternatives est que le code a été conçu pour les écrans LCD et des boutons poussoirs momentanés, encodeurs rotatifs pas et adaptable aux autres sorties de l’écran. Ces menus sont orientaient autour de choisir entre un petit nombre de modes et en l’incrémentant les valeurs relativement lentement. Nous savons que les encodeurs rotatifs sont une option d’entrée de matériel grand car ils permettre des changements de valeur d’entrée relativement rapide tout en conservant un contrôle précis à vitesse lente. Je voulais écrire du code qui pourrait autoriser la navigation de menu de niveau supérieur sans ambiguïté mais vous permettent également de faire défiler rapidement un large éventail de valeurs au sein de chaque sous-sous-menu/réglage, en exploitant les points forts de la molette.
L’approche
J’ai décidé de suivre quelques conseils pour utiliser des instructions if () pour une structure de menu simple et gardez-le esquisse. Le code qui en résulte s’appuie sur mon précédent Instructable qui voulait sûrement lire les impulsions de rotation et la direction. S’il vous plaît vérifiez-le dehors pour le fond.
Dans ce sketch, nous ajoutons la lecture du bouton-poussoir centre sur l’arbre de l’encodeur rotatif, en utilisant le code que Nick Gammon mis au point pour les changements d’état de bouton d’enregistrement avec debouncing et sans dépendre de la fonction delay() de l’Arduino qui empêche le microcontrôleur d’exécuter tout autre code et serait potentiellement introduire retard notable dans notre croquis, ralentir par exemple taux de rafraîchissement d’écran. Code du bouton État changement est beaucoup plus utile que de lire juste logique numérique haute ou basse lorsque vous utilisez un bouton pour sélectionner quelque chose une fois, comme une option de menu, comme elle peut vous aider à prévenir involontaire des sélections multiples à chaque pression de touche.
Nous allons jeter un oeil à ce que vous devez configurer pour utiliser cet exemple de code à l’étape 1.