Faire des applications interactives microcontrôleur en Minutes (2 / 4 étapes)

Étape 2: Menu définition

je ne pense pas que je n’ai jamais rencontré quelqu'un qui savoure vraiment apprendre une nouvelle syntaxe de langage programmation (surtout avec des délais imminente!), mais cette syntaxe est un peu différente.  Ce n’est pas un usage général de programmation langage, mais une syntaxe très ciblée, connu comme un Domain Specific Language (DSL ).  DSL en général est des outils puissants qui peuvent considérablement amplifier votre capacité à s’interfacer efficacement avec l’ordinateur en face de vous et leurs champs d’application très limitées aident à accélérer votre maîtrise d’eux.

Maintenant prenez le temps de regarder le fichier de conception de menu (image ci-dessous) qui a été utilisé pour générer des menus pour le tuner.

Le fichier de menu est une spécification compacte qui raconte le générateur de code beaucoup de choses sur la façon dont vous va interagir avec l’application.  --en particulier il :

• Définit les lignes de texte pour un ou plusieurs menus
• Définit les domaines qui relèvent de ces lignes qui seront liés aux variables dans le programme
• Définit les commandes qui doivent être appelées lorsqu’un champ est modifié, ou lorsque vous dessinez un champ
• Définit les types de variables associées ainsi que les limites ou d’intrants acceptables pour ces champs
• Associe certaines entrées avec des commandes à exécuter ou des menus à activer

Des menus ont cette forme :

<NomMenu > {[MenuCommand ] *

"MenuLine " [LineCommand ] *
}

NomMenu
Le nom de menu est a déclaré toujours à l’intérieur des crochets pointus, que ce soit définir le menu, ou agissant comme cible d’une action (par exemple passer à < DisplaySettingsMenu >).  Le menu de niveau supérieur est toujours nommé HomeMenu.

MenuCommand
MenuCommands peut prendre la forme d’une directive de no_cursor :

[no_cursor]

Cela indique au générateur de code qu’aucun curseur ne doit s’afficher dans ce menu.  Plus généralement, cependant, le MenuCommands prendra la forme d’une liaison d’événement qui associe une entrée de touche à une action particulière.  Les actions peuvent être de passer à un autre menu, par exemple :

[long_back -> < DisplaySettingsMenu >]

Cela provoque la machine d’État basculer vers le DisplaySettingsMenu si le bouton est maintenu enfoncée pendant une seconde ou plus.

Ou une action de lien de l’événement peut simplement servir à déclencher un appel à une fonction généré par les utilisateurs par exemple :

[sel -> (toggleStrobe)]

Événements possibles incluent :

sel, arrière, haut, bas, long_sel, long_back

MenuLine
MenuLines sont des chaînes de caractères qui indiquent ce qui sera montré à l’écran et également identifie les zones qui seront associés à des variables par l’intermédiaire de la LineCommands.  Généralement, vous voudrez avoir le curseur activé pour indiquer la ligne actuellement sélectionnée.  Lorsque indiqué, le curseur s’affiche comme une grande-que de signer dans la première colonne, donc vous devez être sûr de laisser un espace vide en première position de chaque ligne.  Notez également la ligne de commentaire qui permet de garder une trace de la largeur de ligne maximale--16 dans ce cas, mais cela dépendra de l’affichage que vous utilisez.  Champs sont jalonnés en plaçant une chaîne de caractères unique au sein de la ligne qui sera mis en correspondance par l’associé LineCommands--Notez que vous devez être sûr de la taille de ce champ pour contenir le nombre maximal de caractères pour toute valeur de champ possible.

LineCommand
Le LineCommand est sans doute la partie la plus complexe de la syntaxe, mais, heureusement, c’est le dernier d'entre eux.  Le LineCommand suit toujours la ligne qu'il modifie et son travail consiste à définir les actions de l’événement select ligne spécifiques, tant pour associer des champs avec des variables et de définir les types de ces variables si le code généré peut gérer les variables de manière adaptée type.

Ligne spécifique certains événements sont exactement comme les événements au niveau du menu ci-dessus, sauf qu’ici l’événement touche select est le seul disponible, comme les autres boutons ne sont pas généralement associés à une ligne particulière.  Si défini, un événement de sélection spécifique au ligne remplacera l’événement select menu-global si le curseur se trouve sur la ligne en question.

Associations de variables de champ prennent cette forme

[FieldString Direction cible :Type ]

FieldString
Le FieldString que nous avons déjà discuté--c’est la chaîne de caractères unique ligne qui marque l’emplacement et la longueur d’un champ particulier dans le MenuLine.

Direction
La Direction indique si nous sommes associant une cible à un événement d’entrée de l’utilisateur (->), ou un événement de dessin (<-) ou les deux (<> -).

Objectif
La cible peut être une variable, un jeu ou une fonction de tirage au sort, ou une variable et une fonction de rappel a changé de valeur.

Cibler la Variable (<-| -> | <> –): [min <> – timer_minutes]

Cibler la fonction Set (->): [spd -> (SetSpeed)]

Cibler la fonction Draw (<-): [nnn <-(DrawNum)]

Cibler la Variable w/Callback (-> | <> –): [xxx -> SetContrast(LCD_Contrast)]

[strobeMode <> – SetStrobeMode(strobeMode)]

Notez que le dernier cas en dessus (l’affaire bi-directionelle Variable w/Callback), le rappel de la valeur modifiée est ignoré dans lors de l’élaboration du champ.

Type de
Le modificateur de Type est chargé d’identifier le type de variable et les limites ou les valeurs possibles.
Les types disponibles incluent décimale codée en binaire, entier signé ou non signé en 8, 16 ou 32 bits ou 8 bits énumérations.  La syntaxe de ces types est comme suit :

• BCD8, BCD16, BCD32
• U8, U16, U32
• S8, S16, S32
• enum

Le modificateur de type a la forme :

:Type (limites )

Notez que (limites) sont facultatifs pour tous les types enum.

Exemples :

: BCD8(0,0x99)

: U16(8,1000)

: enum ("None", « Linéaire », « Log »)

: S16(-1000,1000)

: U32

Et c’est tout.  C’est le manuel dans son intégralité pour le langage de définition de menu !

Ensuite nous allons étudier un code source requise pour terminer l’accordeur de guitare.  Nous enlèverons le Mode d’entrée car il complique le code un peu sans offre beaucoup plus d’un point de vue apprentissage.  En outre, le mode 3 x a travaillé beaucoup mieux que les autres modes que nous avons expérimenté, donc il n’est pas sensé de leur offrir.

Articles Liés

Faire un convertisseur boost microcontrôleur à base

Faire un convertisseur boost microcontrôleur à base

Pour un projet récent, j'avais besoin stimuler la sortie d'un port USB (ampage haute charge) 5V jusqu'à 18V pour alimenter un haut-parleur amplifié. J'ai décidé d'essayer de rouler ma propre convertisseur boost (principalement parce que jouer avec gr
Comment faire des pop corn ail ! (14 minutes)

Comment faire des pop corn ail ! (14 minutes)

Comment faire des pop-corn salé, garlicy pour une soirée cinéma avec la famille !Étape 1: Pop pop corn/faire fondre le beurre De gagner du temps, j'ai sauté le pop-corn et le beurre fondu en même temps ! La (dans mon cas environ 4-5 cuillères à soupe
Apprendre à faire des applications IOS avec aucune programmation expiriance

Apprendre à faire des applications IOS avec aucune programmation expiriance

Pour rendre les applications IOS, vous avez besoin d'un Apple mac fonctionnant sous OS X El capitaine ou version ultérieure. C.P. utilisateurs, IOS est tous Désolé pour mac.Étape 1: Télécharger XcodeTout d'abord, déjeuner le mac app store, recherche
Faire des applications ios invisible 8.2

Faire des applications ios invisible 8.2

Il s'agit d'un glitch cool en utilisant le bug dossier imbriqué !Ce que vous devez :Comme beaucoup d'apps que vous souhaitez masquer (au moins 2)5 autres applicationsPatience (mais une fois que vous apprendre que vous pouvez le faire en quelques seco
Faire des perles baguées en 5 minutes !

Faire des perles baguées en 5 minutes !

Bienvenue sur mon deuxième instructable.Bandes de perles sont habituellement faits de céramique ou de pierre. Celui qui est indiqué ici sont de papier et de feuille d'acétate.Un anniversaire de mon meilleur ami était le coin de la rue. Elle aime les
Comment choisir un microcontrôleur

Comment choisir un microcontrôleur

il l'habitude d'être assez limitait le nombre de jetons de microcontrôleur différents disponibles pour les amateurs. Tu dois utiliser tout ce que vous arrivaient à acheter chez le marchand de puce de correspondance, et qui réduit le choix à un petit
Le monde part du microcontrôleur

Le monde part du microcontrôleur

Future électronique a une large gamme de microcontrôleurs. Il est conçu pour être utilisé pour les applications embarquées. Microcontrôleurs (parfois abrégé μc, uc ou MCU ) se consacrent un ordinateurs petit et low-cost en électronique qui est constr
Contrôler un Furby avec Arduino (ou autre microcontrôleur)

Contrôler un Furby avec Arduino (ou autre microcontrôleur)

Le Furby Million de dollars : Nous pouvons reconstruire. Nous disposons de la technologie.Suite de la précédente Instructable où nous excisés cerveau primitif de Furby, il est maintenant temps de le remplacer par quelque chose de plus.Ce Instructable
Groovin ' Grover : Une marionnette microcontrôleur à base

Groovin ' Grover : Une marionnette microcontrôleur à base

Grover Groovin ' est une marionnette manipulée par quatre servos de passe-temps et un contrôleur de servo microcontrôleur à base de Pololu Maestro. Vous pouvez contrôler chacun des membres de Grover indépendamment et lui faire à pied, vague et plus d
Comment faire des écrans personnalisés pour vos microcontrôleurs

Comment faire des écrans personnalisés pour vos microcontrôleurs

Microcontrôleurs comme Arduinos sont un excellent moyen de contrôler vos projets électronique personnalisé. Mais il faut toujours un moyen de connecter les composants externes à la Commission de microcontrôleur. Cavalier des fils peut travailler pour
Intro aux GPS avec des microcontrôleurs

Intro aux GPS avec des microcontrôleurs

Une fois que la compétence des opérations strictement militaires, GPS est devenu une partie intégrante de la vie moderne et en relativement peu de temps ! Qui ne voudrait pas envie de savoir quand et où ils sont n'importe où sur la planète ? C'est un
Comment faire pour mesure courant CA à l’aide de capteur à effet Hall avec Arduino ou autres microcontrôleurs commune

Comment faire pour mesure courant CA à l’aide de capteur à effet Hall avec Arduino ou autres microcontrôleurs commune

S'il vous plaît voir une nouvelle approche plus simple iciObjectif : Ce Instructable montre comment faire une boîte d'interface qui, lorsque raccordé à une rallonge, permet de microcontrôleurs communs comme l'Arduino à mesure AC courant comme un sign
Programmation des microcontrôleurs PIC

Programmation des microcontrôleurs PIC

microcontrôleurs PIC sont un outil très utile et polyvalent pour une utilisation dans de nombreux projets électroniques. Ils sont très peu coûteux et facile à trouver. Ils sont aussi très puissants et beaucoup sont capables de vitesses allant jusqu'à
Microcontrôleur mesure la fréquence cardiaque par le biais du bout des doigts

Microcontrôleur mesure la fréquence cardiaque par le biais du bout des doigts

La fréquence cardiaque est un paramètre de santé très crucial qui est directement lié à la solidité du système cardiovasculaire humain. Ce projet décrit une technique de mesure de la fréquence cardiaque par le biais du doigt à l'aide d'un microcontrô