Control remoto multifunción marcador basado en Arduino, ESP8266 y uPanel firmware: interfaz de desarrollo (3 / 5 paso)

Paso 3: interfaz

La interfaz consta de 6 paneles de la pantalla como se muestra en Figg. 6 a 11.

Algunas de ellas son paneles estáticos, es decir, no cambian su apariencia en tiempo de ejecución mientras que otros son dinámicos y cambian su aspecto en tiempo de ejecución basándose en los valores de variable de sketch de Arduino. Un buen ejemplo de panel dinámico se muestra en la Fig.8; Este panel simula lo que se muestra en el MFS real reproduciendo el diseño estático diseñado en el paso 2.

Se recomienda el uso de paneles que simulan el estado real del objeto (en este caso el estado MFS) durante el diseño, desarrollo y prueba de la interfaz µPanel para completar tanto la interfaz y el sketch de Arduino (o cualquier otro software de microcontrolador) evitando el uso de hardware real.

En la Fig.12 se muestran las transiciones posibles entre los paneles.

Para hacer fácil el desarrollo de paneles una en línea simulador del panel está disponible en http://www.miupanel.com/Panel-Design/ONLINE-PANEL...

En el momento de la publicación de este Instructables en línea simulador del panel sólo está disponible para visualización de una cadena que define el diseño del panel. La estructura de la cadena que describe un panel y todas las opciones gráficas son muy bien explicadas en http://www.miupanel.com/. Aquí es suficiente indicar que un panel tiene un diseño estructurado como una matriz y cada elemento de la matriz, llamada contenedor, puede estructurarse como una matriz, así y así sucesivamente. Opciones de visualización pueden ser indicadas para cada elemento de la matriz o para grupos de elementos de la matriz. Macro puede usarse también para operaciones repetitivas.

En el desarrollo de un panel es necesario prestar atención a la gran cantidad de soportes que fácilmente pueden llevar a un error por lo tanto, para almacenar la cadena que describe un panel, se recomienda utilizar un archivo de texto y un enfoque de diseño de arriba hacia abajo.

El proceso se ha utilizado para definir el panel que se muestra en la Fig.7.

El panel se ha subdividido en contenedores principales con algunas opciones de dimensiones, estilos, colores de fondo y primer plano.

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;}}

Copiar y pegar la cadena en el simulador online panel el panel mostrado en la figura 13a se obtiene. El disponible naranja (!. Área de F90) se subdivide en 2 contenedores principales. El primero contiene más de 4 contenedores con fondo blu difundido (! 228.114), contorno redondeado blanco (r30) (-) y la dimensión de 90% (90) de la dimensión horizontal entero del recipiente que contiene; 4 contenedores están alineados (_). El último contenedor contiene, por el momento, sólo texto.

El panel final se logra entonces que detalla el contenido y el estilo de cada contenedor como se muestra en la Fig. de 13a a la 13h y detallada en el siguiente.

Sección 1 ({T:SEZIONE1;}) se ha subdividido en 2 secciones en filas diferentes y lo mismo para la sección 2 ({T:SEZIONE2;}):

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

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

Se obtiene reemplazando cada subcadena el panel mostrado en Fig.13b.

Sección 1.1 ({T:SEZIONE1.1;}) ha sido detallado con 4 contenedores en (_) de 2 filas y 2 columnas (|) para contener los botones para incrementar y disminuir la puntuación del partido:

{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-;}}

Sección 1.2 ({T:SEZIONE1.2;}) ha sido detallado con 2 par de 3 dígitos verdes en 2 columnas:

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

Fig.13C muestra el resultado.

Seguir al detalle todos los recipientes...

{T:SEZIONE2.1}:--> {fb * 10 {^ B9% 30, 10r80! FFF:CRONO; |L9G:0;} | {RETARDO: 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;}}}

... obtenemos el resultado mostrado en Fig.13f.

En este caso es posible evitar la horizontal y las barras de desplazamiento vertical intentan adaptar el panel de las dimensiones del dispositivo utilizando el estilo de w (Dw! F90; en lugar de D! F90;).

El resultado se muestra en la Fig.13g (Fig. 13h ajusta solamente el contorno radio).

El sketch de Arduino implementa la versión dinámica del panel que se muestra en la figura 13 h a través de una llamada a una función que subdividen la cadena en subcadenas de panel e incluye los valores de las variables de tiempo de ejecución.

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;} | {RETARDO: 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) {/ / actual es pantalla de inicio

handleStart();

};

screenId = matchPrimaryScreenId;

};

En Fig.13h se muestra el panel final.

La cadena completa de Fig.13h es la siguiente.

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;} | {RETARDO: 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;}}}

Para la definición de los otros paneles se ha utilizado la misma técnica. En particular la pantalla de marcador de la figura 9 es definida estáticamente como sigue (ver 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;} | {RETARDO: 0; | ^ BA % 30, 10r80! FFF:TIMEOUT;}}} _ {fb * 15 {^ B2% 40, 10r80! FFF:EXIT;}}}

En tiempo de ejecución el grupo se gestiona dinámicamente mediante una llamada a una función a tener en cuenta los valores de las 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 ((modo == 0 & & tarea == 1) || (Mode == 1)) {Serial.print(P("F00"));} Else {Serial.print(P("000"));};

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

Si ((modo == 0 & & tarea == 2) || (Mode == 2)) {Serial.print(P("F00"));} Else {Serial.print(P("000"));};

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

Si ((modo == 0 & & tarea == 3) || (Mode == 3)) {Serial.print(P("F00"));} Else {Serial.print(P("000"));};

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

Si ((modo == 0 & & tarea == 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 ((modo == 0 & & tarea == 1) || (Mode == 1)) {Serial.print(P("0F0"));} Else {Serial.print(P("000"));};

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

Si ((modo == 0 & & tarea == 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 (";} | {RETARDO: "));

Serial.Print(timeout);

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

Serial.println("");

screenId = scoreboardScreenId;

};

Artículos Relacionados

Control remoto vía GSM/GPRS SMS(Arduino)

Control remoto vía GSM/GPRS SMS(Arduino)

control remoto, especialmente cuando este no ethernet o Wifi en el exterior, ha sido una cosas muy profundas en el pasado. Cuando era un niño, siempre imagen que yo tengo un equipo que puede controlar todos los electrodomésticos. Ahora, esto se convi
Cualquier circuito con un control remoto de la TV (y un Arduino) de control

Cualquier circuito con un control remoto de la TV (y un Arduino) de control

La mayoría de los botones de un mando nunca se utiliza. Así que por qué no usarlos para controlar electrodomésticos y otros aparatos electrónicos en su casa. En este proyecto, voy a mostrarle cómo utilizar un Arduino para decodificar la señal del con
Relé control remoto Plug And Play (frambuesa y Arduino y leer sensores)

Relé control remoto Plug And Play (frambuesa y Arduino y leer sensores)

El objetivo era crear fácil de usar control de extremo a extremo sobre tomas de corriente mediante relé, incluyendo (y quizás principalmente) GUI Web y automatización.Como siempre intento usar las soluciones existentes y recurrir lo menos posible en
Cómo hacer un control remoto inteligente web-títere por hacking Twitter, Google, Skype, Arduino y procesamiento!

Cómo hacer un control remoto inteligente web-títere por hacking Twitter, Google, Skype, Arduino y procesamiento!

Cómo manipular un objeto físico en la web sólo mediante el uso de servicios comunes de la web y sus datos de acceso se alimenta, con alguno añadido abrir cosas fuente para decodificar y manipular los datos y, en definitiva, utilizar los datos para mo
Controlar una placa de Arduino usando un Control remoto infrarrojo

Controlar una placa de Arduino usando un Control remoto infrarrojo

-IntroducciónHola a todos, mi nombre es Noreddine Kessa, soy un entusiasta de la electrónica.  Me divertí mucho este fin de semana jugando con mi juguete nuevo, Kit Arduino ATmega328 DIY que he conseguido en eBay, y me encantaria compartir la alegría
Guante de Control remoto de TV usando Arduino, proyecto sumativa TEJ3

Guante de Control remoto de TV usando Arduino, proyecto sumativa TEJ3

Hoy vamos a aprender cómo crear un guante de control remoto para su TV utilizando un Arduino. Hice un guante que sólo utiliza tres dedos, para que todos los cinco que necesitarás flex sensor (5), resistencia (5), cables puente macho (7) y los cables
Brazo robótico con control remoto

Brazo robótico con control remoto

Esta es una guía para hacer un control remoto robótica brazo (6DOF) o simplemente para controlar algunos servos en algo.Puede usar un TV normal de IR remoto para controlar los servos en un brazo robótico mecánico. hay 17 botones del mando a distancia
Control LEDSs con cualquier control remoto por infrarrojos (TV)

Control LEDSs con cualquier control remoto por infrarrojos (TV)

Este es mi primer instructable. En este instructable le mostraré cómo motores de encendido y apagado de LEDs o DC usando control.e remoto infrarrojoPaso 1: componentesReceptor de infrarrojos 1)Breadbord 2)3) Arduino uno4) cables de puenteControl remo
Sistema de control su Tv, Dvd y Audio con Arduino y Android

Sistema de control su Tv, Dvd y Audio con Arduino y Android

Hola todos, este es mi segundo instructable y mi primero en inglés, así que, lo siento por los errores.Quiero compartir este proyecto es acerca de cómo puede controlar su Tv, DVD y su sistema de Audio con Arduino y una aplicación para Android con inv
Control remoto aerodeslizador

Control remoto aerodeslizador

Nuestro producto es un aerodeslizador pequeño control remoto que funciona en la tierra. El aerodeslizador es rápido, estable y fácil de controlar. Su falda es la protagonista. La falda puede reducir la fricción, que permite el aerodeslizador llegar a
Basados en ARDUINO robot de control remoto IR

Basados en ARDUINO robot de control remoto IR

Hola todo el mundo. Este mi nuevo robot de control remoto proyecto IR utilizando arduino. Se trata de un robot de simple diseño, que usted puede construir fácilmente.Paso 1: requisitos:Requerimientos del proyecto:Arduino uno Tsop1738 (receptor ir)H p
Control remoto Arduino marcador usando tiras de LED

Control remoto Arduino marcador usando tiras de LED

marcadores son caros!  No sólo que, LED de 7 segmentos muy grande es caro, demasiado!  Marcadores pueden dar a su equipo un sentido de legitimidad.   Después de ver marcadores en todo el internet, yo pensé, bueno, no tengo que comprar un marcador, po
Cómo hacer un Arduino basados en luz con control remoto infrarrojo de la noche!

Cómo hacer un Arduino basados en luz con control remoto infrarrojo de la noche!

Aquí está un Instructable que le mostrará cómo construir una noche de la Arduino basado en luz conpequeño control remoto infrarrojo que permite recorrer 10 pre set colores y un desvanecimiento al azarrutina de color que lazos para siempre.Este instru
Arduino navegador basado en control remoto (linux)

Arduino navegador basado en control remoto (linux)

tenemos niños.  Amo a pedacitos pero que manten ocultos el control remoto para el satélite y la TV cuando ponen canales para niños.Después de este suceso sobre una base diaria durante varios años y después de mi querida esposa que me permitía tener u