Contrôlé à distance tableau de bord multifonction basé sur firmware Arduino, ESP8266 et uPanel : développement de l’interface (3 / 5 étapes)

Étape 3: INTERFACE

L’interface est composée de 6 panneaux de l’écran comme indiqué dans Figg. 6 à 11.

Certains d'entre eux sont des panneaux statiques, c'est-à-dire ils ne changent pas leur look lors de l’exécution, tandis que d’autres sont dynamiques et changent de look pendant l’exécution sur la base de l’Arduino croquis des valeurs variables. Un bon exemple du panel dynamique est indiqué dans la Fig. 8 ; Ce panneau simule ce qui est affiché sur le MFS réel reproduire la mise en page statique conçu à l’étape 2.

L’utilisation de panneaux qui simulent le statut de l’objet réel (dans ce cas, le statut de la MFS) est recommandée pendant la conception, de développement et de test de l’interface µPanel afin d’achever tant l’interface et l’esquisse de l’Arduino (ou tout autre logiciel de microcontrôleur) en évitant l’utilisation du matériel réel.

Fig.12 figurent les transitions possibles entre les panneaux.

Afin de rendre facile le développement des panneaux une en ligne, simulateur de panneau est disponible à http://www.miupanel.com/Panel-Design/ONLINE-PANEL...

Au moment de la publication de cette Instructables sur ligne simulateur de panneau est disponible seulement pour la visualisation d’une chaîne qui définit la disposition du panneau. La structure de la chaîne décrivant un panneau et toutes les options graphiques fournies sont très bien expliquées à http://www.miupanel.com/. Ici, il suffit d’indiquer qu’un groupe d’experts a une mise en page structurée sous forme de tableau et chaque élément du tableau, appelé conteneur, peut être structurée sous forme de tableau ainsi et ainsi de suite. Options de visualisation peuvent être indiquées pour chaque élément du tableau ou pour les groupes d’éléments du tableau. Macro peut également être utilisé pour des opérations répétitives.

Dans l’élaboration d’un panneau il faut faire attention à la grande diversité des brakets qui peut facilement conduire à une erreur alors, afin de stocker la chaîne de caractères décrivant un panneau, il est recommandé d’utiliser un fichier texte et une approche de conception descendante.

Le processus suivant a été utilisé pour définir le panneau illustré à la Fig. 7.

Groupe d’experts a été subdivisé dans des conteneurs principaux avec des options pour les dimensions, les styles, les couleurs d’arrière-plan et de premier plan.

D ! F90 {^ {-r30! 228 114 % 90 {T:SEZIONE1;}} _ {-r30! 228 114 % 90 {T:SEZIONE2;}} _ {-r30! 228 114 % 90 {T:SEZIONE3;}} _ {-r30! 228 114 % 90 {T:SEZIONE4;}} _ {T:SEZIONE5;}}

Copie et collage de la chaîne dans le simulateur de panel en ligne le tableau représenté dans la Fig. 13 a est obtenu. Le disponible orange (!. F90) zone est subdivisée en 2 conteneurs principaux. Le premier contient encore 4 conteneurs avec fond blu diffusée (! 228 114), contour blanc arrondi (r30) (-) et la dimension de 90 pour cent (90 %) de la dimension horizontale entière du récipient qui les contient ; les 4 conteneurs sont alignés (_). Le conteneur de ce dernier contient, pour le moment, uniquement du texte.

Le panneau final est ensuite réalisé détaillant le contenu et le style de chaque conteneur comme détaillé ci-après et illustré à la figure de 13 a à 13h.

Section 1 ({T:SEZIONE1;}) a été divisé en 2 sections sur les différentes lignes et la même chose pour la section 2 ({T:SEZIONE2;}) :

{T:SEZIONE1;}:--> {{T:SEZIONE1.1;} _ {T:SEZIONE1.2;}}

{T:SEZIONE2;}:--> {{T:SEZIONE2.1;} _ {T:SEZIONE2.2;}}

Remplacer chaque sous-chaîne le tableau représenté dans Fig.13b est obtenu.

Section 1.1 ({T:SEZIONE1.1;}) a été détaillé d’inclure 4 conteneurs en 2 rangées (_) et 2 colonnes (|) pour contenir les boutons pour incrémenter et décrémenter le score du match :

{T:SEZIONE1.1}:--> {fb * 10 {^ B5 % 40, 10r80 ! FFF:LOCALI +; _B6 % 40, 10r80 ! FFF:LOCALI-; {^ B7 % 40, 10r80 ! FFF:OSPITI+ ; _B8 % 40, 10r80 ! FFF:OSPITI-;}}

Section 1.2 ({T:SEZIONE1.2;}) a été détaillé d’inscrire 2 couple de 3 chiffres verts à 2 colonnes :

{T:SEZIONE1.2}:--> {* 10 {-r30! 228 114 {LI5:0 ; & L15:0 ; & L25:0;}} | {& &} | {-r30! 228 114 {LJ5:0 ; & L35:0 ; & L45:0;}}}

Fig.13C montre le résultat.

Continuant de détailler tous les conteneurs...

{T:SEZIONE2.1}:--> {fb * 10 {^ B9 % 30, 10r80 ! FFF:CRONO ; |L9G:0;} | {DÉCALAGE: 0; | ^ BA 30 %, 10r80 ! FFF:TIMEOUT;}}

{T:SEZIONE2.2}:--> {^ * 10 {-r30! 228 114 {L55:0 ; & L65:0;}} | {& &} | {-r30! 228 114 {L75:0 ; & L85:0;}}}

{T:SEZIONE3;}:--> {fb * 10 {^ BB 26 %, 10r80 ! FFF:SUPPL.; | LBG:0;} | {LCG:0; | ^ BC 26 %, 10r80 ! FFF:RIGORI;}}

{T:SEZIONE4;}:--> {fb * 10 {^ B3 % 40, 10r80 ! FFF:TEMPO;} | {^ B3 % 40, 10r80 ! FFF:DISPLAY;}}

{T:SEZIONE5;}:--> {fb {* 15 {^ BI % 40, 10r80 ! FFF:SIMULA;}} | {* 15 {^ BH % 40, 10r80 ! FFF:ESCI;}}}

... nous obtenons le résultat illustré dans Fig.13f.

Dans ce cas, il est possible d’éviter l’horizontale et de barres de défilement verticales essaient d’adapter le panneau aux dimensions appareil utilisant le style w (Dw! F90 ; au lieu D ! F90;).

Le résultat s’affiche dans Fig.13g (Fig. 13h ajuste seulement le rayon contour).

Le sketch Arduino implémente la version dynamique du panneau illustré à la Fig. 13 h via un appel à une fonction qui subdivisent la chaîne en sous-chaînes de panneau et inclut des valeurs de variables d’exécution.

void sendMatchPrimaryScreen () {}

Serial.Print (P (« $P: D ! F90 ; {^ {-r30! 228 114 % 90 {{fb * 10 ^ {B5 % 40, 10r80 ! FFF:LOCALI +; _B6 % 40, 10r80 ! FFF:LOCALI-;} ")) ;

Serial.Print (P ("| {} ^ B7 % 40, 10r80 ! FFF:OSPITI +; _B8 % 40, 10r80 ! FFF:OSPITI-;}} _ {* 10 {-r10! 228 114 {LI5:0 ; & L15:0;")) ;

Serial.Print (P (« & L25:0;}} | {& &} | {-r10! 228 114 {LJ5:0 ; & L35:0 ; & L45:0;}}} ")) ;

Serial.Print (P ("_ {-r30! 228 114 % 90 {{fb * 10 {^ B9 % 30, 10r80 ! FFF:CRONO ; |L9G:0;} | {DÉCALAGE: 0; | ^ BA 30 %, 10r80 ! FFF:TIMEOUT;}} ")) ;

Serial.Print (P ("_ {^ * 10 {-r10! 228 114 {L55:0 ; & L65:0;}} | {& &} | {-r10! 228 114 {L75:0 ; & L85:0;}}} _"));

Serial.Print (P ("{-r30! 228 114 % 90 {fb * 10 {^ BB 26 %, 10r80 ! FFF:SUPPL.; | LBG:0;} ")) ;

Serial.Print (P ("| {} LCG:0 ; |BC % 26, 10r80 ! FFF: ")) ;

Si (defGame == 0) {Serial.print(P("RIGORI"));}

Si (defGame == 1) {Serial.print(P("RIGORI"));}

Si (defGame == 2) {Serial.print(P("TIRI"));}

Si (defGame == 3) {Serial.print(P("***"));}

Si (defGame == 4) {Serial.print(P("RIGORI"));}

Si (defGame == 5) {Serial.print(P("RIGORI"));}

Serial.Print (P (";}}} _ {-r30! 228 114 % 90 {fb * 10 {^ B3 % 40, 10r80 ! FFF:TEMPO;} ")) ;

Serial.Print (P ("| {} B3 % 40, 10r80 ! FFF:DISPLAY;}}} _ {fb * 15 {{^ BI % 40, 15r80 ! FFF:SIMULA;}} | {{^ BH % 40, 15r80 ! FFF:ESCI;}}} ")) ;

Serial.println("") ;

Si (screenId == startScreenId) {/ / écran actuel est écran Démarrer

handleStart() ;

};

screenId = matchPrimaryScreenId ;

};

Le panneau final est indiqué dans Fig.13h.

La chaîne complète de Fig.13h est la suivante.

DW! F90 ; {^ {-r30! 228 114 % 90 {{fb * 10 {^ B5 % 40, 10r80 ! FFF:LOCALI +; _B6 % 40, 10r80 ! FFF:LOCALI-;} | {^ B7 % 40, 10r80 ! FFF:OSPITI +; _B8 % 40, 10r80 ! FFF:OSPITI-;}} _ {* 10 {-r10! 228 114 {LI5:0 ; & L15:0 ; & L25:0;}} | {& &} | {-r10! 228 114 {LJ5:0 ; & L35:0 ; & L45:0;}}} _ {-r30! 228 114 % 90 {{fb * 10 {^ B9 % 30, 10r80 ! FFF:CRONO ; |L9G:0;} | {DÉCALAGE: 0; | ^ BA 30 %, 10r80 ! FFF:TIMEOUT;}} _ {^ * 10 {-r10! 228 114 {L55:0 ; & L65:0;}} | {& &} | {-r10! 228 114 {L75:0 ; & L85:0;}}} _ {-r30! 228 114 % 90 {fb * 10 {^ BB 26 %, 10r80 ! FFF:SUPPL.; | LBG:0;} | {LCG:0; | ^ BC 26 %, 10r80 ! FFF:TIRI;}}} _ {-r30! 228 114 % 90 {fb * 10 {^ B3 % 40, 10r80 ! FFF:TEMPO;} | {^ B3 % 40, 10r80 ! FFF:DISPLAY;}}} _ {fb {* 15 {^ BI % 40, 10r80 ! FFF:SIMULA;}} | {* 15 {^ BH % 40, 10r80 ! FFF:ESCI;}}}

Pour la définition des autres panneaux de la même technique a été utilisée. En particulier l’écran du tableau de bord de la Fig. 9 est défini de manière statique comme suit (voir Fig. 14) :

DW! F90 ; {^ {! 000 % 98 {{-r10 % 95, 10 * 15 {Tfbi #FF0:ATLETICO S. ANNA;}} _ {-r10 % 95,50 {{% 95,10 {{% 20 * 10M1fbi #F00:RETI;} | {% 20 * 10M2fbi #F00:CRONO;} | {% 20 * 10M3fbi #F00:TEMPO;} | {% 20 * 10M4fbi #F00:TIMEOUT;}}} _ {% 95 * 12 {^ % 45 {LI5:0 ; L15:0 ; L25:0;}} | {^ % 45 {LJ5:0 ; L35:0 ; L45:0;}}} _ {% 95,10 {{> % 30 * 15M5fbi #0F0:LOCALI;} | {& & & & & & & & & & & & &} | {< % 30 * 15M6fbi #0F0:OSPITI;}}} _ {! 228 114 % 98 {{-r10 % 95 {fb * 10 {^ B5 % 40, 10r80 ! FFF:LOCALI +; _B6 % 40, 10r80 ! FFF:LOCALI-;} | {& & &} | {^ B7 % 40, 10r80 ! FFF:OSPITI +; _B8 % 40, 10r80 ! FFF:OSPITI-;}}} _ {-r10 % 95 {fb * 10 {^ B9 % 30, 10r80 ! FFF:CRONO ; |L9G:0;} | {DÉCALAGE: 0; | ^ BA 30 %, 10r80 ! FFF:TIMEOUT;}}} _ {fb * 15 {^ B2 % 40, 10r80 ! FFF:EXIT;}}}

Lors de l’exécution, le panneau est dynamiquement géré par un appel à une fonction de prendre en compte les valeurs des variables :

void sendScoreboardScreen () {}

Serial.Print (P (« $P: D ! F90 ; {^ {! 000 % 98 {{-r10 % 95, 10 * 15 {Tfbi #FF0: ")) ;

Serial.Print(logo2) ;

Serial.Print (P (";}} _ {-r10 % 95,50 {{% 95,10 {{% 20 * 10M1fbi #")) ;

Si ((mode == 0 & & tâche == 1) || (mode == 1)) {Serial.print(P("F00"));} else {Serial.print(P("000"));} ;

Serial.Print (P (»: RISULTATO;} | {% 20 * 10M2fbi #")) ;

Si ((mode == 0 & & tâche == 2) || (mode == 2)) {Serial.print(P("F00"));} else {Serial.print(P("000"));} ;

Serial.Print (P (»: CRONO;} | {% 20 * 10M3fbi #")) ;

Si ((mode == 0 & & tâche == 3) || (mode == 3)) {Serial.print(P("F00"));} else {Serial.print(P("000"));} ;

Serial.Print (P (": TEMPO;} | {% 20 * 10M4fbi #")) ;

Si ((mode == 0 & & tâche == 4) || (mode == 4)) {Serial.print(P("F00"));} else {Serial.print(P("000"));} ;

Serial.Print(P(":timeout;}}}")) ;

Serial.Print(P("_{%95*12{^%45{")) ;

Si (Ab2! = OFF_EXTRA) {}

Serial.Print(P("li5:")) ;

Si (Ab2 == UNO_EXTRA) {Serial.print("1");} else {Serial.print(Ab2);} ;

Serial.Print(P(";")) ;

};

Si (Ab1! = OFF) {}

Serial.Print(P("L15:")) ;

Serial.Print(AB1) ;

Serial.Print(P(";")) ;

};

Si (Ab0! = OFF) {}

Serial.Print(P("L25:")) ;

Serial.Print(Ab0) ;

Serial.Print(P(";")) ;

};

Serial.Print (P ("}} | {^%45{"));

Si (Bb2! = OFF_EXTRA) {}

Serial.Print(P("LJ5:")) ;

Si (Bb2 == UNO_EXTRA) {Serial.print("1");} else {Serial.print(Bb2);} ;

Serial.Print(P(";")) ;

};

Si (Bb1! = OFF) {}

Serial.Print(P("L35:")) ;

Serial.Print(Bb1) ;

Serial.Print(P(";")) ;

};

Si (Bb0! = OFF) {}

Serial.Print(P("L45:")) ;

Serial.Print(Bb0) ;

Serial.Print(P(";")) ;

};

Serial.Print(P("}}}_{%95,10{{%20*15M5fbi#")) ;

Si ((mode == 0 & & tâche == 1) || (mode == 1)) {Serial.print(P("0F0"));} else {Serial.print(P("000"));} ;

Serial.Print (P (»: LOCALI;} | {& & & & & & & & & &} | {% 20 * 15M6fbi #")) ;

Si ((mode == 0 & & tâche == 1) || (mode == 1)) {Serial.print(P("0F0"));} else {Serial.print(P("000"));} ;

Serial.Print(P(":OSPITI;}}}")) ;

Serial.Print (P ("_ {! 228 114 % 98 {{-r10 % 95 {fb * 10 {^ B5 % 40, 10r80 ! FFF:LOCALI +; _B6 % 40, 10r80 ! FFF:LOCALI-;} ")) ;

Serial.Print (P ("| {} & & &} | {^ B7 % 40, 10r80 ! FFF:OSPITI +; _B8 % 40, 10r80 ! FFF:OSPITI-;}}} _ {-r10 % 95 {fb * 10 {^ B9 % 30, 10r80 ! FFF:CRONO ; |L9G: ")) ;

Serial.Print(Timer) ;

Serial.Print (P (";} | {GAL: ")) ;

Serial.Print(timeout) ;

Serial.Print (P («; | ^ BA 30 %, 10r80 ! FFF:TIMEOUT;}}} _ {fb * 15 {^ B2 % 40, 10r80 ! FFF:ESCI;}}} ")) ;

Serial.println("") ;

screenId = scoreboardScreenId ;

};

Articles Liés

Tableau de bord irrégulier sur les voitures GM

Tableau de bord irrégulier sur les voitures GM

il s'agit de mon 1999 Oldsmobile Alero. Au début de septembre 2010 le tableau de bord (compteur de vitesse, tachymètre, jauge de température, jauge à essence et divers voyants) arrêté allumage et à l'enregistrement des données immédiatement lorsque j
Remplacer le tableau de bord s’allume sur 2000-2007 Subaru Impreza

Remplacer le tableau de bord s’allume sur 2000-2007 Subaru Impreza

c'est vraiment frustrant quand les lumières derrière vos jauges de brûlent, parce que vous ne pouvez pas dire à quelle vitesse vous allez ou la quantité de gaz vous avez laissé ! Heureusement, ils sont faciles à remplacer.Ma voiture est une berline I
Contrôleur de Volume PC USB Media basé sur Arduino

Contrôleur de Volume PC USB Media basé sur Arduino

Bonjour à tous et Bienvenue sur mon troisième Instructable.Un de mes amis a un système de son avec un cadran de réglage du volume, et il est assis sur son bureau à la recherche de vraiment bien. Je voulais quelque chose de semblable, mais avec des fo
Système basé sur l’Arduino d’alarme température bricolage & humidité & détecteur de fumée

Système basé sur l’Arduino d’alarme température bricolage & humidité & détecteur de fumée

L'équipe ICStation vous présenter comment bricolage cette température & humidité & fumée système d'alarme basé sur ICStation Mega 2560 compatible avec Arduino.The tension de fonctionnement de ce système est DC5V. Il peut mesurer la température, l'
Nous allons faire cuire : scanner 3D basé sur l’Arduino et traitement

Nous allons faire cuire : scanner 3D basé sur l’Arduino et traitement

vous vous demandez de copypaste méthode, utilisable dans la vraie vie, non seulement dans la réalité virtuelle ? Moi aussi. C'est le 21ème siècle, et ceux qui sont plus proches que tout ne l'imaginez ! Ceci est possible grâce à des imprimantes et des
Comment faire PS2 clavier lire afficher système basé sur l’Arduino

Comment faire PS2 clavier lire afficher système basé sur l’Arduino

ICStation Team vous présenter ce système d'affichage lecture clavier PS2 en détails. La tension de fonctionnement du clavier PS2 lire système d'affichage est DC 5V. Lorsque vous appuyez sur les touches des lettres ou des chiffres, le LCD1602 affiche
Tableau de bord Analytique IoT Intel

Tableau de bord Analytique IoT Intel

Ce Instructable fournit des informations sur comment faire configurer un compte de tableau de bord Analytique Intel, connectez un périphérique vers le nuage, contrôle un périphérique via le cloud et exécuter des programmes Arduino qui communiquent av
TV ordinateur contrôlable à distance MP3 PLAYER à l’aide de ARDUINO et traitement

TV ordinateur contrôlable à distance MP3 PLAYER à l’aide de ARDUINO et traitement

Bonjour tout le monde. ici je montre mon projet TV ordinateur contrôlable à distance MP3 player à l'aide de la carte arduino et de logiciels de traitement. Cette idée de projet est basée sur le contrôle des ordinateurs à l'aide de la télécommande du
Compagnon de T-Rex de tableau de bord !

Compagnon de T-Rex de tableau de bord !

Ever wanted un compagnon de tableau de bord du T-Rex sur un pivot ? Mon ami l'a fait, et elle a obtenu ! Mon ami a des enfants, et ils ont laissé un jouet T-Rex dans son SUV. Elle jeté il vers le haut sur le tableau de bord un jour pour rappeler elle
Ping Pong tableau de bord

Ping Pong tableau de bord

Le concept initial de ce projet a vu le jour lorsque la Animade table de ping pong de bureau était devenant un lieu de ligne et de désespoir et les gens s'efforçaient de se rappeler les scores, et se souvenir qui a tourner il devait servir. Pour réso
Tableau de bord de carte pliable

Tableau de bord de carte pliable

Dans ce instructable je vais faire un tableau de bord guéables sur une carte de bureau. C'est assez simple et vous pouvez le faire en 30 minutes environ et c'est parfait pour propulser qui jouent dehors sports d'équipe comme socker ou le baskets'il v
Lasercut Cribbage-style tableau de bord

Lasercut Cribbage-style tableau de bord

je voulais un tableau de bord extrêmement polyvalent-celui qui permet de garder la note de quoi que ce soit numérique : carte de scores du jeu, nombre de tableaux de bord faite, compte à rebours des jours... quoi que ce soit. Donc, j'ai conçu ce tabl
COMMENT FAIRE POUR RÉPARER/REMPLACER PHARE PASSER EN DÉTAIL SUR DODGE RAM | Retirez le panneau de tableau de bord et en tire-bouchon multifonction

COMMENT FAIRE POUR RÉPARER/REMPLACER PHARE PASSER EN DÉTAIL SUR DODGE RAM | Retirez le panneau de tableau de bord et en tire-bouchon multifonction

dans cette vidéo je vous montrer comment j'enlève la partie du tableau de bord sur mon 96 dodge ram 1500 et réparez le commutateur multifonctions de phare avec son problème commun de la fonte des contacts causées par le manque de relais, Merci de reg
Comment installer un ouvre-porte de Garage dans un tableau de bord

Comment installer un ouvre-porte de Garage dans un tableau de bord

J'ai eu un problème... Nous avons une porte de garage Craftsman et deux télécommandes. Le problème est que les télécommandes gardé se perdre parce qu'ils n'avaient aucuns clips sur eux. Voiture de ma femme n'est pas construit en bouton de porte de ga