Flowcode Curso de Programacion

Flowcode permite comprender intuitivamente curso FL UJO CÓ DIGO el desarrollo de software para aplicaciones embebida

Views 239 Downloads 12 File size 12MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Flowcode permite comprender intuitivamente

curso FL

UJO CÓ

DIGO

el desarrollo de software para aplicaciones embebidas, debido a que el código está escrito utilizando objetos

1

gráficos, en lugar de los lenguajes de programación tradicionales como C y ensamblador. Primer episodio.

curso de programación

Flowcode Francesco y Daniele Ficili Defilippi

D

por día de la invención del primer transistor,

dotado con millones de procesos de inteligencia de

ahora se produjo en

información por segundo vida, semplificandoci. Detrás

En 1947, la electrónica se ha convertido en parte

de estos dispositivos, servidores incansables reales e

parte integral de nuestras vidas, y sería impensable ahora, creen que pueden prescindir de esta pieza esencial de la historia de la evolución humana. Una de las derivaciones más comunes de esta disciplina es sin duda representados por el mundo de los dispositivos integrados. Cuando hacemos una llamada telefónica, o navegar por Internet usando nuestros teléfonos inteligentes, cuando conducimos nuestro coche, cuando vamos de compras y pagar con nuestra tarjeta de crédito, en cada una de estas circunstancias, varios dispositivos electrónicos

invisibles de nuestros días, que todavía se esconden la mano dell'uo- mo: alguien ha diseñado características, ellos diseñados por vía electrónica, y se ha desarrollado la lógica. El desarrollo de sistemas embebidos ha experimentado su desarrollo en los últimos años, y se ha pasado de dispositivos totalmente análogas a los sistemas de microcontroladores, para hacer el Formance per- en el punto, ser opportunamen- lo planeado, usando un lenguaje apropiado la programación. La programación, el corazón real de desarrollo, ha sido

En la electrónica ~ de junio de 2013

127

Fig. 1 logo Matrix Multimedia.

Durante años, el dominio exclusivo de las pocas empresas en el mundo, siendo de hecho inaccesible a empresas no especializadas y privatizada a que, debido a los altos costos de los sistemas de desarrollo. En las últimas dos décadas, con la llegada de los primeros controladores basados ​en memorias

y 18 (8 bits),

• Microchip dsPIC30F, dsPIC33F, dsPI- C33E y PIC24 (E, H y F), • Atmel AVR y la plataforma Arduino, • Atmel ARM.

flash (reprogramable eléctricamente camente), el coste de desarrollo de sistemas se ha reducido

El concepto en que se basa Flowcode es el uso de una

drásticamente, por lo que este tipo de tecnología accesible incluso a los promotores privados y para el

diagrama de flujo, de ahí el nombre Flowcode) para el

mundo stico hobbi- . Estoy tan aparecieron los primeros entornos de desarrollo y compiladores de software a bajo costo (lenguajes basados ​tales como

enfoque hace que sea posible reemplazar la actividad mental

C y ensamblador generados ralmente). Dichos entornos Sin embargo, han seguido manteniendo

código gráfico escrito en Flowcode se informa en Fig. 2.

representación gráfica sobre la base de diagramas de flujo (o desarrollo de un programa de objetivo incorporado. Este basado en imple- palabras clave, típico de los lenguajes de programación tradicionales. Un ejemplo de un fragmento de

características de complejidad de uso y los idiomas que se utilizan para requerir, rey esse- utilizados de manera efectiva, las bases de programación no es indiferente.

El entorno de desarrollo, además de generar el ejecutable para la programación del chip (y posiblemente también la traducción en el código fuente C), integra un simulador y un ICD ( depurador

en circuito) para respaldar depuración código directamente sobre el objetivo. Una de las características más interesantes de

instrumentos se han mantenido, sin embargo, un obstáculo

Flowcode es, como veremos en detalle en los próximos

importante para superar a los recién llegados a la

episodios, la disponibilidad de una amplia biblioteca de

programación de software. Para superar los problemas de

componentes para el uso de los periféricos normal- mente

este tipo está naciendo, en los últimos años, una nueva

integrados en los microcontroladores. El uso de los

generación de entornos de desarrollo, que tiene el propósito

componentes simplifica considerablemente el acceso a los

de abstraer las dificultades intrínsecas de un lenguaje común

dispositivos periféricos, incluso en el caso de dispositivos más Fig. 2

de programación basada en texto, atrás- uso Cendo de

complejos, tales como

formalismos más comunes . Uno de los miembros destacados de esta nueva generación de entornos de

Ejemplo de código Flowcode.

desarrollo es Flowcode, producido por Matrix Multimedia, empresa líder en la producción de sistemas de desarrollo de hardware / software para microcontroladores.

El entorno de desarrollo Flowcode, ahora en su quinta versión, fue creado para superar el problema de la complejidad de los entornos tradicionales de desarrollo y permitir el desarrollo de aplicaciones embebidas complejas, incluso aquellos con un mínimo (o no) el conocimiento de los lenguajes de programación . Flowcode es un IDE completo (Integrated Development Los objetivos actuales son compatibles:

• serie 10, 12, 16 Microchip PICmicro

128 De junio de 2013 ~ en Electrónica

CÓDIGO

Environment) para microcontroladores de 8, 16 y 32 bits.

curso FL UJO

Flowcode Programación Gráfica

DIGO UJO CÓ

curso FL

La Fig. 3 Matriz de sitio multimedia para descargar Flowcode.

tales como el puerto USB, el puerto éter-neta u otra comunicación y / o sistemas de control. Una descripción más detallada de los componentes se hará más adelante, pero es importante hacer hincapié en que la disponibilidad de estas bibliotecas permite el desarrollo de aplicaciones, incluso muy complejas con unos pocos interconexión sencilla de bloques funcionales.

Instalación y configuración de Flowcode V5 Como primer argumento illustria- mo sobre cómo instalar y configurar el IDE. El paquete de instalación Flowcode se puede descargar desde el sitio web de Matrix ( www. matrixmultimedia.com) y, como se mencionó anteriormente pre- actualmente soporta varios objetivos, que corresponden Varias versiones maestras del

de instalación Flowcode.

software. Como una versión básica del curso fue elegido la versión para microcontroladores PIC de Microchip Technology. Después de haber sido vinculado a la página web de la Matriz, accedemos a la sección de descargas y descargar la versión de PIC.

Después de la descarga de archivos ejecutar las FlowcodeV5 - PICMicro.exe y empezamos a instalar el programa. Las comparaciones Ra mago La instalación, la primera pantalla se muestra en la Fig. 4. Pulsamos el botón siguiente para acceder a la siguiente pantalla, confirmamos para aceptar la licencia y continuar. Fig. 5 - Aceptación de la licencia. Fig. 4 - ventana inicial

En la electrónica ~ de junio de 2013

129

desarrollo está bien instalado y puede proceder a la realización de nuestras aplicaciones. Como hardware SUP- al curso que va a utilizar un sistema modular de tarjetas de desarrollo, siempre se produce por la matriz, que se llama E-bloque. El sistema consta de una placa base a la que se puede conectar a diferentes bloques expansiones funcionalidad Derne. Cada bloque proporciona los recursos de hardware necesarios para las aplicará una interfaz específica, tales como, por ejemplo, puertos, USB o Ethernet, CAN pantalla gráfica, interfaces, controladores para motores paso a paso, etc. Fig. 6 - la entrada de datos de instalación.

La junta como una opción de la placa base para el desarrollo de aplicaciones que se presentarán a lo largo del tate duración del curso es el EB006. La junta EB006 se suministra con un CD de instalación que se utiliza para instalar todos los controladores necesarios para utilizar youself correctivo y sistema de desarrollo. Insertarlo en el reproductor de CD y posicionar nuestra niamoci dentro de la carpeta "drivers \ EB-006". Dependiendo de la arquitectura de nuestro PC elegimos dpinst_amd64 (64 bits AMD o Intel), dpins_ia64 (Itanium de 64 bits) o dpins_x86 (32 bits) y se inicia el ejecutable. Se verá la pantalla La Fig. 8, Se forma in- pulsando el botón "Avan- que" se iniciará el proceso de instala- ción del conductor. Vamos adelante y, en el caso de una notificación de nosotros que Windows no puede verificar la autenticidad de los conductores, optar por seguir con el installazio- ella. La operación se ha completado la

Fig. 7 - el código de activación Selección de producto.

A continuación, entramos en nuestro nombre y el nombre de la organización (en este caso nos hemos referido como "ElettronicaIn"), como se muestra en La Fig. 6, ancora y pulse el botón una vez Siguiente. Seleccionamos la

Fig. 8 Inicio de instalación del controlador de pantalla para E-EB006 bloque.

carpeta de destino y pasar a la siguiente pantalla. En este punto el mago Le pide confirmación para continuar con la instalación y comenzará después de recibir la copia del archivo en el proceso de disco. Después dell'operazio- se activación, o activar una licencia libre, como podemos ver en la Fig. 7. La licencia es libre sin restricciones en términos de tiempo, pero intensamente y vato un conjunto reducido de all'inter- no hay componentes ambientales.

130 De junio de 2013 ~ en Electrónica

CÓDIGO

Instalación EB006 Junta de Desarrollo En este punto nuestro entorno

curso FL UJO

le pedirá que active el producto utilizando una clave de

DIGO UJO CÓ

curso FL

La Fig. 9 Interface Flowcode.

pantalla que indica que la instalación se ha realizado correctamente. Para finalizar la instalación pulse el botón "Finalizar".

la gestión del dispositivo. Por último, a través de un apropiado mago configuración, es posible establecer la configuración básica del microcontrolador, tales como la frecuencia del reloj interno, cualquier protección, la

Conectamos ahora placa de desarrollo EB006 con el

configuración de la memoria, etc. La interfaz Flowcode

cable USB (suministrado) a la computadora. El sistema

se divide principalmente en bares y paneles, sin ognu-

opera- vo será instalar controladores adicionales y uno

de los cuales tiene una tarea específica que ahora

de los dos LED en las luces de mesa, BE landoci

vamos a analizar. Si se muestran no todos los bares,

informó que depurador Es activo.

puede añadirlos al menú " pantallas "Simplemente añadiendo una marca de verificación junto al nombre que los identifica. en Fig. 9 Se muestra la pantalla prin-

Interfaz de Flowcode En este punto también nuestro desarrollo de hardware está configurado y listo para ser utilizado, a continuación, pasamos a la descripción de la interfaz IDE programa- ción. Como ya se ha mencionado en la parte introductoria de este episodio, Flowcode es un entorno de desarrollo gráfico: esto significa que el programa no se muestra, como es el caso de los lenguajes de programación tradicionales, a partir de un código textual, pero estará compuesto, haciendo

Flowcode Cipale. En el centro de la mo blindado es una pestaña (que en nuestro caso se llama " principal "), Que llamaremos" área del proyecto "¿Qué va a ser implementado en el diagrama de flujo. En la parte izquierda de la pantalla en su lugar se presenta la barra de iconos, desde el que se puede insertar Asesor esce- que bloquean dentro del programa.

uso únicamente de objetos gráficos. En el caso de la representación elección Flowcode es el de los diagramas de flujo (o diagrama de flujo). Los elementos básicos del diagrama de flujo deben poner

Fig. 10 Barras de herramientas.

en práctica las estructuras de control fundamentales del programa, tales como bloques de decisión, ciclos, retrasos, múltiples selecciones, las operaciones lógicas y matemáticas y más.

En la electrónica ~ de junio de 2013

131

Fig. 11 Barre de los iconos.

La Fig. 12 Opciones del proyecto.

Muy por encima de la zona del proyecto son la barra de herramientas (que se muestra en Fig. 10),

la que nos proporciona los comandos básicos para gestionar el proyecto, generar código, depurar, compilar y simular nuestro diseño. Entre el área del proyecto y la barra de herramientas se encuentran los componentes de la barra que nos permite utilizar, dentro de nuestros proyectos, componentes complejos, tales como USB, Ethernet, control de motores sin escobillas, y mucho más, simplemente colocándolos dentro del panel que es visible en la parte inferior central de la pantalla del programa. La barra de iconos, representada en Fig.

11 Contiene todos los bloques posibles que se pueden agregar en el diagrama de flujo. Para colocar una cerradura de seguridad simplemente arrastre dentro del diagrama: una flecha amarilla nos mostrará el lugar exacto en el que se inserta y el icono del ratón cambia pren- Dendo forma del objeto que queremos insertar en nuestro diagrama de flujo.

18F4550, como se muestra en Fig. 12. Ahora para la ficha " Descripción del proyecto "Y insertamos una descripción significativa. Desde el punto de la

Fig. Descripción del proyecto 13 Inserción.

funcionalidad del programa no cambia nada si dejamos estos campos en blanco pero con el fin de entender mejor lo que lleva a nuestro proyecto, que sería una buena idea para insertar al menos una breve descripción. En nuestro caso hemos incluido el título y la descripción del proyecto que se realizará al final de

Vamos a describir en los próximos episodios de los otros bares y paneles que no hemos discutido en esta sección.

Vamos a configurar el proyecto para que pueda ejemplos operativos veremos más adelante. Seleccionamos gliendo la familia de microcontroladores esce- 18 y más tarde

132 De junio de 2013 ~ en Electrónica

La Fig. 14, configuramos el proyecto para reflejar la implementación de hardware del sistema. El cuadro " de

la velocidad de reloj PIC "Debe ser ajustado a 48 MHz y la caja" Configurar compo- nente "Usted debe estar seleccionado. Ahora vamos a configurar los ajustes específicos del microcontrolador haciendo clic en el botón

CÓDIGO

Crear un proyecto Para crear un proyecto Flowcode abierta y pulse el botón " nuevo proyecto "En la barra de herramientas.

LED. Dentro de la pestaña " Operaciones generales "Visible

curso FL UJO

este episodio: un sencillo programa que parpadea un

La Fig. 14

curso FL

UJO CÓ

DIGO

Ajustes generales nuevo proyecto.

" configurar el componente "Lo que nos hará accede- Rey en una pantalla de configuración como la que se muestra en la Fig. 15. Por razones de tiempo sólo

La Fig. 15 especifica la

tendremos que cam- pusimos cada bit como se muestra

un bloque. Al igual que antes inse- la operación de

configuración

en la figura, sin soffer- podrida en porque de cada

reactivación del bloque de la dirección salidas del

microcontrolador.

elección, que todavía puede ser la lectura completa ficha

microcontrolador, arrastrando dentro dell ' área del proyecto el

técnica específicamente el microcontrolador utilizado. Después de rellenado correctamente todos los campos pulsamos el botón Aceptar para volver a la pantalla guración proyectará de nuevo y pulse OK para iniciar la realización del diagrama de flujo.

icono de salida, (siente pre- en la barra de iconos) entre los bloques de inicio y de fin, que ya están presentes de forma predeterminada dentro del diagrama. Al hacer clic en el botón derecho del ratón sobre el bloque que hemos entrado aparece la ventana emergente de Windows. Elegimos la opción " propiedad "Y examinar la ventana que se abre, se muestra por conveniencia de Fig. 16.

Para utilizar esta configuración en los siguientes ejemplos se ahorra el ascensor está diseñado para, pulsando sobre el botón " Guardar proyecto "Barra de herramientas, con el nombre" ConfigurazioneBase.fcf ".

Ahora podemos establecer cualquier ty propriedisponibles para el bloque seleccionamos. El bloque se utiliza para comprobar el estado de nuestras salidas del microcontrolador. En la lista a scorrimen" puerto "Podemos elegir la puerta de la cual

Adición de bloques en el diagrama de flujo

queremos cambiar el valor

Fig. Propiedades de

Una vez que la configuración del hardware se ha

bloque 16 de salida.

completado, volvemos a en el ascensor está diseñado para insertar los bloques del diagrama de flujo. Para insertar un bloque simplemente arrastrado narlo desde la barra de herramientas dentro del área del proyecto. Una flecha amarilla nos mostrará el lugar exacto donde vas a insertar. Para quitar un bloque sólo tiene que seleccionarlo y pulsar " borrar ". Al hacer clic en el bloque con el botón derecho del ratón se puede realizar otras operaciones tales como cortar, copiar, examinar sus propiedades y más veremos en episodios posteriores.

Examinemos ahora las propiedades de

En la electrónica ~ de junio de 2013

133

durante la elaboración de un código implementado en cualquier lenguaje de programación. Vamos a añadir un retraso de software dentro de nuestro diagrama de bloques. Para ello seleccionamos el icono de bloqueo de retardo, esta pre SEM en la barra de iconos, y se arrastra dentro del diagrama, colocándolo justo debajo Fig.

de salida, mientras que la caja " Variable o valor "Nos

Propiedades de

indican el valor al cual queremos establecer el puerto

bloque 17 de

seleccionado. Por lo general, no fijamos el valor de todo

retardo.

el puerto de salida, pero sólo uno o unos pocos bits.

del bloque insertado previamente. En este punto se accede a las propiedades del bloque, haciendo clic en el botón derecho del ratón, como lo hicimos anteriormente. Como se puede ver en La Fig. 17, el

Para ello nos encontramos consuelo en el panel " salida ". bloque permite insertar un retraso en la ejecución del Si mo selezionia- " de un solo bit "Podemos elegir qué bits flujo del programa. Podemos elegir la cantidad de conjunto, dejando inalterado el valor de los otros pines de puerto. La selección de " plena puerto "Y marcando la casilla" El uso de la máscara "Se puede seleccionar qué

retardo que se insertará indicando el valor y la unidad de medida. El valor que podemos insertar debe ser un tipo entero, es decir, sin coma, pero todavía puede

es necesario establecer bits. De esta manera es posible

entrar en el segundo retrasos menores opera a través de la unidad de medida con una resolución más alta. bit no está marcado en la máscara. El cuadro de texto " etiqueta Por ejemplo, para añadir un retardo de 0,5 segundos ETI "Se le permite editar el texto que se mostrará por valor ponemos justo dentro de la caja " valor de retardo "El encima de la parte interior del diagrama de bloques. Es número 500, pero como una unidad que indica" milisegundos muy importante indicar para cada bloque per- etiqueta ". Recordemos que 1 milisegundo equivale a 1.000 descriptiva para, aunque para proyectos muy simples segundos de micro y 1 segundo es igual a 1000 pueden parecer inútil, si queríamos realiz- diagramas milisegundos. complejos Zare, puede ser muy útil tener etiquetas que, con unas pocas palabras, se indica lo que pone en práctica ese bloque en particular. Ellos son el equivalente de las observaciones escritas en la práctica dejar sin cambios los valores del perno de la puerta cuyo

Las estructuras de control de flujo

Veamos algunas de las Fig. Árbol 18 decisión binaria y la comparación del panel de configuración.

curso FL UJO CÓDIGO

134 De junio de 2013 ~ en Electrónica

Fig. Estructura 19 Selección

curso FL

UJO CÓ

DIGO

Múltiple.

otros iconos en " icono de la barra ". En Flowcode se pueden utilizar todas las estructuras de control usuales presentes normalmente en lenguajes de programación Tion como, a modo de ejemplo, el C.

Decisión binaria A través de la ' icono de decisión puede implementar la funcionalidad de toma de decisiones es binario. El bloque hace que los pasos de flujo de programa para hacer la primera o la rama secundaria, en función del valor de la comparación llevada a cabo dentro del bloque. En la práctica, si se verifica la condición, el programa continuará la ejecución de los bloques que se le presenten en la rama identificada por la etiqueta " uno "De lo contrario ejecutar la otra rama. Para aquellos que conocen el lenguaje del bloque C es el equivalente educativo " si ".

Selección múltiple Mediante el uso de la ' selección del icono es posible poner La Fig. 20

en práctica la capacidad de selección múltiple. El flujo del programa se desvía a través de la rama para el que la

La estructura por defecto implemente el bloque " hasta " Pero para

ecuación comparación satisface el valor indicado en el

lograr los otros dos construcciones simplemente modifican sus

caso específico. Donde ninguno de los casos indicados

propiedades como se ha visto por los otros bloques en las

satisface la ecuación ción de la selección, el programa

secciones anteriores. Vamos a explorar las tres opciones que se

llevará a cabo las instrucciones de la rama de por defecto.

ofrecen:

Se pueden hacer selecciones con un máximo de 10 casos

Ciclo "Mientras "

Mientras la ecuación comparación es verdadera las

darse cuenta de la mayor parte de los posibles

instrucciones se ejecutan en el interior del bucle. La

programas. En la práctica, si una de las ramas indicadas

comparación es effettua- a la primera entrada en el

como una etiqueta tiene el valor que satisface la ecuación

bloque de ciclo y cada vez que se terminan todas las

se ejecuta, de lo contrario se descarta. Sólo una de las

instrucciones internas por ciclo. Cuando la comparación

ramas se pueden realizar y cada uno debe tener un valor

es falsa instrucciones internas no se ejecutan y el

diferente de la otra selección. Es el equivalente de la

programa continúa la ejecución de los pasos después de

construcción " cambiar ... caso "De un programa

ciclo. En el caso de que la ecuación de la comparación

implementado en el lenguaje C. Se muestra un ejemplo de

resultaría ser falsa en el primer control, el código interno

uso de la estructura de selección múltiple en Fig. 19.

para el ciclo no se ejecuta ni una sola vez y el programa continúa su ejecución ignorar las instrucciones Nute contenidos dentro de los dos bloques de ciclo. Un ejemplo de este tipo de ciclo se muestra en la Fig. 20.

Icono de ciclo

L ' icono de bucle Que permite alcanzar tres dife- rentes controles de flujo:

- Hasta

Ciclo "Correr hasta que ..."

-

Al establecer las propiedades del bloque " Te- es el ciclo: "El

- Repetir

valor" fecha tope "Al igual que en

En la electrónica ~ de junio de 2013

que"

(Siempre y cuando es cier

diferentes, pero este número es más que suficiente para

Correr hasta que se ...

Ciclo "mientras

135

Fig. 21 - Ciclo "Run ... tanto tiempo." La comparación se realiza en el extremo del bloque.

Fig. 22 - Ciclo "Repetir".

La Fig. 21, lo hacemos equivalente al bloque escrito en C

en la configuración de la celda de la izquierda " Nu meros

con las instrucciones " Mientras que hacer ". En este caso, la

ciclos: ". El bloque es fundamental cuan- do necesitamos

instrucción de comparación se realiza al final de cada

tener una porción de nuestro diagrama de flujo se lleva a

ejecución de las instrucciones contenidas dentro del bucle.

cabo para un número predefinido de veces.

El código interno se ejecuta entonces al menos una vez.

Ejemplo: parpadeamos un LED ... Ciclo "Repetir" Mediante la selección de las propiedades del bloque a " Número de

ciclos: "Tal y como se ha hecho en Fig.

22, el ciclo se pone a funcionar como un " para ". Configurado de esta manera las instrucciones internas se ejecutan un número de veces igual al número indicado

Ahora que sabemos que los principales bloques o variaciones respecto del control de conocimientos flus-, podemos implementar un simple diagrama que parpadear un LED. Para este caso tenemos los siguientes componentes: - EB006 "multiprogram- PICmicro USB

La Fig. 23

Junta EB006 la izquierda y la pestaña E-Blocks EB004 derecha.

curso FL UJO CÓDIGO

136

De junio de 2013 ~ en Electrónica

Fig. 24 Un método para la eliminación del microcontrolador PIC.

DIGO

con uno a 12MHz y mover el saltador de la selección de la fuente de reloj en " OSC "Y el interruptor de selección de la oscilación a" XTAL ". Un ción gráfica abstracta

UJO CÓ

dell'imposta- de los diversos puente se informa en Fig. 25.

Conectamos ahora la tarjeta EB006 con el EB004 E-

curso FL

bloques usando el puerto A, como se ilustra en Fig. 26.

El hardware está listo y podemos dedicación aplicación Carci del programa. Abrimos Flowcode y cargar la configuración de la base de que habíamos guardado tablero de mer "

durante la configuración de nuestro primer proyecto.

- EB004 "LED Board"

Pulsamos el botón " proyecto abierto "En la barra de

- PIC18F4550 - 12MHz cuarzo

herramientas y seleccione el archivo" ConfigurazioneBase.fcf ". Para evitar "ensuciar" el archivo, ya que Flowcode durante algunas operaciones de guardar

La junta EB006 contiene el microcontrolador y el hardware necesario para interactuar con otras tarjetas de E-blocks y el PC desde el que se va a programar; Se debe estar configurado para ser utilizado en nuestro ejemplo. El puente de selección de alimentación debe ser colocado en el lado izquierdo, a fin de garantizar que el suministro proviene de USB. El puente de programación también debe estar configurado como USB, por lo que se puede programar directamente desde un PC, sin la ayuda de ICSP consumidor programada de Microchip. Sustituyendo ahora el microcontrolador que se monta actualmente en el tablero con el PIC18F4550. Esta operación es muy delicada, de cinco porque tenemos que tener mucho cuidado en la eliminación del microcontrolador sin dañar placa de desarrollo neggiare. Fig. 24.

automáticamente el proyecto, guardar el proyecto de inmediato con un nuevo nombre. En el menú seleccione " Archivo / Guardar como ... "Y se denota como el nuevo nombre" LampeggioLed.fcf ". Ahora vamos a pensar

Fig. 25 interruptores de configuración y puentes pestaña EB006.

el poder de selección puente Puente programador selección

Prestando atención a la dirección dell'al- el pasador 40 de la carcasa, inserte el PI C18F4550, asegurándose

la selección Puente Función del oscilador pin

de que todos los pasadores van sin doblar, dentro del casco. Para plegar correctamente las piernas de PDIP40, podemos ayudar con el plano de nuestra mesa de trabajo, apoyando su lado PDIP y confiando

circuito de oscilación

en el caso hasta que las piernas son paralelas al borde. En este punto se reemplaza cuarzo

En la electrónica ~ de junio de 2013

137

Fig. 26 la configuración completa para el ejemplo de forma de realización.

veríamos debido Fe- extensión física nomeni a NO- ojo stro en el LED siempre encendido, pero con una intensidad menor que la que será máxima. Para evitar este problema insertamos un bloque de retardo después de la puesta a uno de la puerta y otro - idéntico - puesto a cero después de la cerradura de la puerta. Hemos establecido el valor del retardo de 1 segundo tanto para

las operaciones que se deben realizar

los bloques insertados. Si usted ha

para asegurarse de que se ve un LED

hecho todo correctamente usted debe

parpadeante en los frascos de

conseguir una similar a la del

tarjetas. En primer lugar tenemos que

diagrama de flujo de Fig. 27.

crear un bucle infinito, el programa se ejecutará a lo largo de la tem- poco de actividad y por lo que elegir el bloque " hasta ". Hemos establecido para que el bucle siempre se ejecuta como se describe en la sección anterior que es. Entonces, necesitamos algo que nos permite que modifiquemos el valor de un pin del microcontrolador y el bloque que es correcto para nosotros es el icono de salida. Insertamos los dos bloques dentro del bucle y impostiamoli de modo que la primera septos bit 0 al eseguis- simo el flujo ya que se

Premia- botón mo " compilar y transferir "Para cargar el programa en el microcontrolador que se presenta en nuestra placa de desarrollo. Esperamos el programa para realizar las operaciones de carga y una vez que la observamos que nuestro primer programa se ejecuta en el tablero con LEDs que se encienden y

implementa actualmente,

apagan cada segundo.

Un pasador al puerto 0.

138 De junio de 2013 ~ en Electrónica

g

parpadeo del LED conectado

CÓDIGO

La Fig. 27

Diagrama de flujo para el

curso FL UJO

valor 1 y el segundo bit 0 al valor 0. Si

Nuestra corriente está ahora en pie listo para ser cargado en la tarjeta. Guarde el chorro de pro pulsando el botón " proyecto SAVE "En" barra de herramientas "Porque va a volver a utilizar más adelante como base para otros ejemplos.

Continuamos nuestro viaje de descubrimiento de Flowcode, el desarrollo gráfico innovador

curso FL

UJO CÓ

DIGO

para microcontroladores ofrecidos por Matrix Multimedia. Flowcode le permite desarrollar fácilmente el software para aplicaciones

2

integradas debido a que el código está escrito utilizando objetos gráficos, en lugar de los lenguajes de programación tradicionales como C y ensamblador. Segundo episodio.

curso de programación

Flowcode Francesco y Daniele Ficili Defilippi

N

ella último episodio del curso abbia- mo

empezó a familiarizarse con el entorno de desarrollo gráfico Flowcode, desarrollado por Matrix Multimedia. Fue presentado en el entorno gráfico, se describe en detalle la interfaz, presentado las estructuras de control y se ha demostrado un primer ejemplo de programación. En este episodio remo spieghe- el uso de variables, constantes y describir los bloques de entrada y cálculo. Más adelante discutiremos dos características muy potentes de Flowcode: macros y componentes. Con el conocimiento adquirido será lograr el segundo proyecto práctico: la gestión del módulo de E-bloque

LED por medio del módulo de teclado, utilizando sus respectivos componentes de software.

Las variables en Flowcode

En el episodio anterior nos zato ser utilizado dispositivos de salida solamente y nunca hicimos uso de variables, que son una parte muy importante de la planificación, ya que nos permiten almacenar datos y realizar cálculos. A través del menú principal de Flowcode " Ver-> Explorador de proyectos "Abrimos panel adicional donde podemos ver todas las constantes y variables globales disponibles dentro de nuestro proyecto, como se muestra en Fig. 1.

En la electrónica ~ Julio / Agosto 2013

113

La Fig. 1 Proyecto de Flowcode con el panel

explora proyecto visible a la derecha de la pantalla.

llegar a una nueva posición de

Añadir variables Para añadir una nueva variable que

equilibrio con el ratón en la etiqueta " firme

nāre posicionar el puntero del ratón en

"Haga clic en el botón derecho y

la etiqueta de "etiquetas" y haga clic

seleccione desde el menú para dina

en el botón derecho para que pueda

de diez" Añadir nuevo ". En la ventana

elegir en el desplegable cuadro de

de configuración, que se muestra en La

"añadir nuevo" hacia abajo, como se

Fig. 4, inserte el nombre de la

muestra en

constante, su valor y la breve descripción. Las constantes ningún

Fig. 2.

Fig. 2 - Adición de variable.

tipo de indicación de silano concreto

Al pulsar el botón " Ag venir de nuevo "Se abre la creación de una nueva ventana de variables, como se muestra en Fig. 3.

porque son tratados como "# definir ".

Los tipos de datos tati hasta ahora

Extracción de variables /

SUP- que van desde lógico numérico,

constantes

con o sin un signo, números y

Si quisiéramos borrar una variable o

cadenas de punto flotante. Para

una constante que es suficiente con

establecer la variable que tiene que

seleccionar con el ratón el elemento deseado desde el panel " explora

introducir el nombre, el valor inicial,

proyecto "Dentro de la sección" Bali glo- "Y

una breve descripción y el tipo. Al ATA crédito y añade a la lista en la ventana Explorador de proyectos.

Fig. 3 - creación de ventanillas /

configuración variable.

proyecto, que podría ser muy útil para eliminar todas esas constantes / variables resultantes tano incluido en la lista, pero no se utilizan dentro de nuestro proyecto. Para ello, basta con hacer clic en el botón derecho del ratón sobre " Variables "O" Estaca co "En

Cuando se crea un nuevo proyecto

el panel" Explorador de proyectos "Y

ya contiene dos pre-configurado

elegir

constante " falso "Y" falso "Respectivamente a los valores 0 y 1. Para AG-

Fig. 4 - creación de ventanillas /

configuración constante.

114

Julio / Agosto 2013 ~ en Electrónica

CÓDIGO

Añadir constante

curso FL UJO

pulse el botón" borrar ". Al final del

pulsar el botón "OK" la variable es

La Fig. 5 bloque de entrada y la ventana

curso FL

UJO CÓ

DIGO

de configuración

en el menú desplegable la opción " claro

la selección que nos puede ayudar a

no utilizada ".

elegir qué variables a utilizar, como se muestra en

la salida de los pines del microcontrolador. Para insertar

Fig. 6. Podemos elegir entre las variables locales y globales o entre los que, si aún no se habían creado, podemos crearlos directamente desde la ventana como lo hemos hecho anteriormente por el panel " explora proyecto ". Haciendo doble clic en una variable en esta lista, que puede entrar directamente en el panel de configuraciones ción cuadro de texto. Del mismo modo que las opciones del panel de configuración de salida "están disponibles de un solo bit "Y enmascaramiento. en el ejemplo Fig. 7 el valor Ra variables assume- de PORTA, pero sólo para el 2º y 4º

el bloque, arrastre el " barra de iconos "El icono

trozos

bloque de entrada y cálculo

El último episodio que examinó el bloque de salida y la zona de demora. Por lo tanto, somos capaces de imponer el valor de un alfiler puerta / salida y esperar un período predeterminado de tiempo entre dos operaciones. Aprendemos ahora a utilizar el bloque de entrada y cálculo.

Fig. 6 - Ventana de Selección

variable.

Bloque de entrada

El bloque de entrada es el bloqueo dual del bloque de salida que se utilizó en el episodio anterior para controlar

correspondiente en el diagrama de flujo. En cuanto a los

Fig. 7 - Ejemplo de enmascarar

otros bloques, mediante la realización de un doble clic

el puerto de entrada.

sobre el icono, es posible abrir la ventana de configuración, que se muestra en Fig. 5.

ya que sólo los pines 1 y 3 tienen el cheque. Tomemos un ejemplo. Supongamos que PORTA tiene un valor igual a 9, que en binario es equivalente a 0b00001001. En VAriabile " VariabileIngresso "Tendremos el valor 8

Al seleccionar de la lista desplegable " puerto: "Hemos

enmascarado con 0b00001010 que tiene como resultado

establecido la puerta ¿hacia dónde queremos hacer la

0b00001001 Y 0b00001010 = 0b00001000, es decir, 8.

lectura y, en el cuadro de texto" variable: ", Insertamos el nombre de la variable en la que queremos cargar el valor leído. Pulsando la flecha a la derecha del cuadro de texto para abrir la ventana

bloque de cálculo

Otro bloque fundamental

En la electrónica ~ Julio / Agosto 2013

115

Fig. 8 propiedades de ventana del bloque de cálculo.

En el cuadro de texto " cálculos "Se puede insertar en las filas en las que el nombre se especifica que los cálculos efectuados, mientras que en el lado derecho hay un panel de selección de la que podemos sacar los valores de variables, constantes y funciones que

lo que nos permite realizar cálculos dentro de nuestro

Flowcode nos pone a disposición. Los operadores

diagrama de flujo. Para añadir simplemente seleccione el icono del cálculo " barra de iconos "All'in- terno y

lógicos / matemáticos que podemos utilizar están

arrastre el área del proyecto. Al hacer doble clic en el bloque de entrar en la ventana de configuración, como se muestra en Fig. 8.

representados en

Tabla 1. funciones válidas se dan en Tabla 2. Para entender mejor el funcionamiento fac- ciamo un ejemplo sencillo. mo Supponia- que tiene la variable

Tabla 1 - / operadores matemáticos lógicos. (,)

paréntesis

- ,

longitud representada en pulgadas y con ganas

Misma, otra

=,

+ ,

" LunghezzaInch "Que contiene el valor de una

La suma, resta, multiplicación y división

* , / MOD

formulario

Fig. 9 Ejemplo de

Menor que, menor que o igual a, mayor que, mayor que o

=

cálculo para la

es igual

> > = TASK_CAN_RX_TIMEOUT; - CanTx → ( CanTxTaskCounter> = TASK_CAN_TX_TIMEOUT) && (SY stemStatus = SYSTEM_ACTIVE); - Diag → ( DiagTxTaskCounter> = TASK_DIAG_TIMEOUT) && (Estado System- = SYSTEM_ACTIVE); -

SensorRanging → SystemStatus = SY STEM_ACTIVE.

CanTxTaskCounter y DiagTxTaskCounter, que vamos a utilizar como contadores para de-

Como se puede ver, la tarea CanRx No está ligado a la

terminar la frecuencia de partida tarea

variable SystemStatus para garantizar la posibilidad de activar el sistema a través de mensajes CAN, y la tarea

Tabla 6 - ordena establecer dell'SRF02. descripción

Comando (Hex)

SensorRanging no tiene un contador para la periodicidad, ya que el período llamado de esta tarea es sólo 10 ms. Analicemos ahora cómo fue Im-

La ejecución de una medición - el resultado en pulgadas.

plementata la lectura del sensor de ultrasonidos: para

0x51

La ejecución de una van - Resultados en centímetros.

interactuar con la parte dispositiva que lo utiliza, el

0x52

La ejecución de una medición - el resultado en microsegundos.

SRF02 tiene la actual capacidad de manejo de uso de

0x56

La ejecución de una falsa van - resultado en pulgadas.

la interfaz de serie que el I 2 C. En nuestro caso, como

0x57

La ejecución de una falsa van - Resultados en centímetros.

una interfaz de comunicación que eligió el I 2 C.

0x58 0x5C

La ejecución de una falsa van - resultado en microsegundos. ciclos de transmisión de 8 a 40 kHz (ráfaga ultrasónica).

descripción

Nombre de la macro

Sensor_SendCommand

Enviar al dispositivo con el comando de la dirección 0x51 0xE0 por escrito.

Sensor_RequestReadResult

Enviar el dispositivo 0xE0 frente a la solicitud de lectura de la dirección 2.

Sensor_ReadResult

Lee el byte de la dirección 2 (alto rango de bytes) y 3 (rango bajo Byte) y cierra la transacción.

134 De noviembre de 2013 ~ en Electrónica

CÓDIGO

Tabla 7 - Macros escritas para la gestión dell'SRF02.

curso FL UJO

0x50

Fig. 8

curso FL

UJO CÓ

DIGO

Macro SensorRangingStateMachine.

En el caso de la interfaz de tipo I 2 C, el SRF02 se comporta muy similar a una memoria EEPROM de la familia 24xx: el dispositivo se parece a un conjunto de registros con acceso de lectura o escritura, tal como lo resume Tabla 5. El acceso de escritura al arriendo 0 permite llevar a cabo una de las operaciones de Tabla 6 ( Sólo se muestran los comandos principales). En nuestro caso usamos los comandos que van, realizando tanto la operación de envío de la ráfaga ultrasónica que la posterior detección del tiempo de vuelo de eco y el posterior cálculo de la distancia. En este caso el resultado de que van se almacena en los registros 2 y 3 (alto rango Byte y gama de byte bajo), de la que posteriormente se puede recuperar rato con una operación de lectura. Además de la orden, el bus debe ser enviada a la in- la dirección del dispositivo (el valor por defecto en caso de interfaz de E 2 C es 0xE0) y la lectura de bits / escritura. Así, un total de dos bytes se envían para cada trans- misión. El procedimiento para obtener la información de la distancia es la siguiente:

buscado con el resultado de que van en cm);

2) el envío del registro de dirección contenida nente el resultado en la lectura;

3) que recibe los dos bytes del registro que contiene el resultado.

Para lograr estas tres operaciones se escribieron tres macros, publicado en Tabla 7. Estas macros son utilizados por el SensorRangingStateMachine macro, que es llamada por el programador principal y proporciona como salida para el resto del sistema, la variable global SensorResult información alguna conexión I²C más de diagnóstico. en Fig. 8 Se muestra el diagrama de bloques de Flowcode macro SensorRangingStateMachine. Este diagrama de flujo que implementa un estado má- quina que se ejecuta en secuencia y con los tiempos correctos tres macros muestran en Tabla 6, con el fin de obtener el resultado de que van. Para ello, los SensorMedics contador RangingCounter, que se incrementa en cada ciclo (recordar que la macro se utiliza se llama directamente desde el planificador principal, así que tiene un tiempo de 10 ms llamada).

1) el envío de la orden de escritura 0x51 (re-

Fig 9a -. Tab general de la ventana de configuración de componentes CAN.

Fig 9b -. Tampón Tab tx 0 de la ventana de configuración de componentes CAN.

Fig 9C -. Tampón Tab rx 0 de la ventana de configuración de componentes CAN.

En la electrónica ~ de noviembre de 2013

135

La Fig. 10

Macro Properties SetTxData componente CAN.

La primera llamada es la macro Sensor_ sendCommand (después de 10 ms desde el inicio de la máquina de

La Fig. 11 Código gráfico para enviar

estados). El segundo llamado a se produce después de

el mensaje CAN.

250 ms (es decir, cuando el contador alcanza el valor de la TIMING_REQ_READ constante, igual a

una ubicación actualizar cada 500 ms o menos. 25) y llama a la macro Sensor_Re- questReadResult. El retardo de 250 ms sirve para asegurarse de que el

Ahora que entendemos la gestión de sensores de

SRF02 recibe el eco de la explosión ultrasónica enviado

ultrasonidos, se analiza cómo los datos a Trans- nodo

al recibir el comando 0x51 y hacer los cálculos

maestro leve en el bus CAN se envían. En primer lu

necesarios. En este punto, después de otros 100 ms se

dobbia- configurar correctamente el oeste com-, por lo que

lee el contenido de los registros que contienen el

acceder a las propiedades adicionales. En la pestaña

resultado, a través de la Sensor_ReadResult macro

principal introduzca los ajustes principales, selezionan-

(contador igual a TIMING_READ_RESULT, igual a

hacer una velocidad de proa de 500 KB, un punto de muestra en un 80% y la hierba de San Juan igual a 1. Pasemos ahora a la pestaña TX Buffer 0, donde, en la

35). Finalmente, después de 150 ms se restablece la otra

sección de marco Identificador, seleccione "Frame

máquina de estado (simplemente restableciendo el contador) y el

extendido "e insertar el cuadro" completo ID "0xC40A5 la

ciclo comienza de nuevo desde el punto de partida. De esta

dirección, como se muestra en el mapa de mensajes.

manera se obtienen

Finalmente nos movemos ficha RX Buffer 0 y establecer un filtro para la recepción, la selección de la verificación "Mesenia salvia ID 0" e insertando la siguiente Fig. Código 12 gráfica para la recepción de

configuración, que se muestra por conveniencia en La Fig. 9 (a, b y c) Es completo. En este punto podemos insertar instrumento, dentro de nuestra agenda, el código Flowcode para enviar el mensaje contenido de materias de distancia y los datos de diagnóstico (ID 0xC40A5). El envío se compone de dos componentes principales: primero, se utiliza el SetTxData macro, para rellenar youself correctiva y la transmisión de mensajes; Este macro toma como parámetros el buffer de envío utilizado, el número de bytes

curso FL UJO

CAN mensaje.

identificación en su caja "Full ID": 0xC40A4. La

CÓDIGO

136 De noviembre de 2013 ~ en Electrónica

curso FL

UJO CÓ

DIGO

Tabla 8 - Periodicidad y la descripción del software del nodo de la tarea de visualización. tarea

descripción

Período [ms]

CanRxTask

500

DisplayTask

500

SwitchTask

200

Se recibe y decodifica el mensaje CAN desde el nodo sensor. Ver los datos decodificados de tarea CanRxTask. Se lee el estado del botón y envía un mensaje correspondiente al evento CAN para el nodo sensor.

enviar (DLC) y los 8 bytes del men- saje. Los datos a

dencia, controla la ejecución de todas las tareas (con la

enviar son las siguientes variables globales:

excepción de la propia tarea CanRx). El fragmento de código gráfico que se da cuenta de lo que se ha descrito

-

SensorResultHighByte → Byte 0;

-

SensorResultLowByte → Byte 1;

-

SensorDiagStatus → 2 bytes.

se informa en Fig. 12.

Pantalla nodo

Las dos primeras variables se obtienen de

La descripción del software del nodo sensor se ha

SensorRangingStateMachine macro, mientras que se

completado; pasamos ahora al nodo de visualización,

calcula la variable SensorDiagStatus (y codificado

que hereda muchos de los conceptos nodo sensor,

como se indica en el mapa de mensajes) desde el

como el programador (que es prácticamente idéntica).

diag- macro sticTask. en La Fig. 10 Muestra las

La función de nodo de pantalla es para recibir mensajes

propiedades de la ventana componente llamado

periódicos enviados por el nodo sensor y ver su informa-

macro.

ción en la pantalla LCD. Además es el nodo que puede enviar en el sueño o despertar al sistema interno,

Una vez lleno el men- saje transmitir correctamente, para enviar el men- saje simplemente llamar a la macro búfer de envío y pasar el buffer de transmisión. en La Fig. 11 Se muestra el fragmento de código gráfico, tal como aparece después de la inserción de la macro a las llamadas de componentes CAN. En este punto, nuestra aplicación nodo sensor lateral está casi completo; Queda para gestionar la entrada / salida controlada por el modo de espera del mensaje CAN enviado desde el nodo de visualización. Mediante el análisis del mapa de mensajes, se ve que el parámetro que determina el estado del sistema (sueño o despierto) se ha impuesto por el byte 0 del mensaje con ID 0xC40A4. Por lo tanto, es necesario gestionar una tarea recibirá dentro de la cual se lee este byte se actualiza y una variable que se utiliza para identificar el estado del sistema. Nuestro planificador ya nos ofrece un punto de entrada para la recepción de 50 ms; para completar el código, introducción ciamo dos llamadas de componentes de macro, y en particular un CheckRx y una GetRxData, tanto en el tampón de 0. El GetRxData el resultado se guarda dentro de la

mediante la detección de la presión de una tecla en el EB018. El software del nodo pantalla se compone de tres tareas cipali cipio, que figuran en Tabla 8.

La filosofía de gestión del sistema es muy similar a lo que vimos para el nodo anterior. A modo de ejemplo, que describe cómo se implementa viamo CanRxTask la tarea; Esta tarea tiene la tarea de recibir y decodificar el mensaje con ID 0xC40A5, procedente del nodo SEN- dolor. Por un lado se ha configurado el componente de CAN en una manera similar a lo que se hizo para el nodo sensor, con la diferencia de que el ID de mensaje de la transmisión en este caso es 0xC40A4, mientras que el filtro de recepción se impone en la identificación fue 0xC40A5 . El AV recepción es de una manera similar a lo que se observó en el caso anterior; en particular, se llama la CheckRx y tres veces la Ge- tRxData, para adquirir los dos bytes de datos que componen la información de la distancia y el byte que contiene los diagnósticos ciones informales. Por último,

variable SystemStatus, que,

En la electrónica ~ de noviembre de 2013

137

Fig. 13 código gráfico que implementa la tarea CanRxTask.

Flowcode para analizar el proyecto y tratar de entender cómo funciona. Ahora podemos probar nuestro sistema, que conecta entre sí los dos nodos con un par trenzado y alimentar el sistema con una tensión de aproximadamente 12V.

El nodo pantalla veremos la información sobre la distancia del sensor ultrasónico recibido del nodo sensor. en La Fig. 14 se muestra una ruta de acceso puede intercambio de mensajes entre los dos nodos, realizado mediante el CAN Analizador de Microchip.

Como se puede ver, el nodo sensor envía el mensaje en el bus detecta una distancia de unos 317 cm (0-1 bytes iguales a 0x13D) y uno sin diagnóstico de fallos activo (2 bytes igual a 0x00). Tras la recepción de la solicitud del sueño (byte 0 de mensaje 0xC40A4 igual a 0), el sistema detiene la transmisión.

conclusiones

SensorData = ((SensorDataHigh = TASK_RX_TI- MEOUT) || (IncomingPacket = new_ INCOMING_PACKET)

Es decir, si el valor es diferente de IncomingPacket NEW_INCOMING_PACKET (situación de espera), la tarea es done.The con su periodicidad clásica (TASK_ RX_TIMEOUT), de lo contrario, va a una rápida ejecución en cada llamada del mismo programador (es decir, una vez a ms). (PacketCheckTime), que permanece activo durante toda la duración de la transmisión. El propósito del temporizador es

muestra en la Fig. 10. Como puede verse a partir del diagrama

evitar que los paquetes de registros que bloquean la tarea en

de bloques, si hay un byte en la recepción en el canal, que se

espera de una parte del paquete. Después de 200 ms es

adquiere mediante el uso de la Receive_Char macro (), puesto

RESET ta todo y comienza de nuevo. Por último, la integridad

a disposición por el componente de ZigBee. Después de recibir

cuando el paquete se recibe de forma gratuita restablece los

los bytes de un tampón de servicio, se mueve a la memoria

contadores y banderas, y se llama la función de decodificación

intermedia de recepción (y aumenta el índice de aso- Ciato a la

(RxDecodeFn).

memoria intermedia) y establece el indicador a Incomin- valor gPacket NEW_INCOMING_

El RxDecodeFn es una función (no es una tarea, a continuación, su ejecución no es

136

De febrero de 2014 ~ en Electrónica

CÓDIGO

El diagrama de bloques de los bloques de tareas RxTask se

curso FL UJO

PAQUETE. Contextualmente activa un temporizador

DIGO UJO CÓ

curso FL

pero tiggered evento periódico) que tiene el único

Function_Parameter2 = RxBuffer [.DEC_ PAR_2]

propósito de decodificar el paquete recibido correctamente y establecer el valor de las variables globales para otras tareas tienen a su vez sus

La primera comprobación se lleva a cabo en la primera

funciones de forma adecuada. El diagrama de bloques

parte del paquete, la que contiene la dirección del nodo. El

de RxDe- codeFn se informa en Fig. 11.

effettua- de controlar es la siguiente:

Brevemente describir la tación imple-. En la práctica, la primera operación realizada es la asignación de los distintos bytes del paquete a las variables específicas, a fin de facilitar la fase siguiente al

(NodeType = NODE_TYPE_SLAVE) && (Packet_IDMajor = EEP_Id_NodeMajor) && (Packet_IDMinor = EEP_Id_NodeMi- nor)

Entonces se comprueba si el nodo es un esclavo ( "S") y que el ID coincide con los valores cargados desde la memoria EEPROM.

Fig. 11 - Diagrama de bloques de la función RxDecodeFn.

siva. Específicamente, un bloque de cálculo que realiza las siguientes asignaciones se utiliza:

Si la prueba tiene éxito, gue prose-, de lo contrario el paquete se descarta. Después de haber realizado esta comprobación preliminar se pasa a la decodificación educa- ción verdadera del paquete. Antes de hacer

NodeType = RxBuffer [.DEC_NODE_TYPE] = Packet_IDMajor RxBuffer [.DEC_ID_ MAJ]

esto, puede controlar si una Eco está activado (= EEP_Conf_EcoEnabled ECO_ENABLED?) Y, si es así, transmite el eco del paquete recibido. Posteriormente,

Packet_IDMinor = RxBuffer [.DEC_ID_ MIN]

Function_MainFunction = RxBuffer [.DEC_ MAIN_FUNCT] Function_Parameter1 = RxBuffer [.DEC_ PAR_1]

un bloque de selección múltiple decodificar el campo de datos Efectos- vo del paquete, ajustando adecuadamente las variables globales utilizado por

En la electrónica ~ de febrero de 2014

137

Fig. 12 - Diagrama de bloques de tarea RelayTask.

Fig. 13 - Diagrama de bloques de tarea EepromTask.

En particular, la sección relativa a la con- trol del relé,

para actualizar, utilizando una variable global. Así, por ejemplo, para actualizar el eco relativa permitiendo parámetro de configuración, los relativos conjuntos de

una vez comprobado que el byte

bloque de cálculo:

otra tarea para la ejecución de acciones específicas.

Function_MainFunction se corresponde con el valor ASCII "R", lleva a cabo las siguientes tareas: EEP_Conf_EcoEnabled = Function_Parame- ter2

EepUpdateRequest = UPDATE_EEP_RE- QUEST

RelayStatus = Function_Parameter2 EEP_Conf_EcoEnabled contiene el valor del

RelayTask para el control efectivo de los relés. Una

parámetro, mientras que la bandera EepUpdate-

palabra aparte Me- Rita la gestión de los parámetros

Solicitar señales a EepromTask tarea que hay una

de almacenamiento en la EEPROM (este respecto,

actualización de los parámetros en la memoria para

por ejemplo, todas las opciones de con- figuración). Esto es manejado por la tarea de re-lativo, pero, aun

ser ejecutados. Consideremos ahora la tarea de con-

así, para saber si los parámetros almacenados

ha examinado la lógica de la comunicación entre las

trol del relé, que será fácil de entender, ahora que se tareas. la

138

De febrero de 2014 ~ en Electrónica

CÓDIGO

Esta información se utilizará entonces Zate de tarea

curso FL UJO

RelayNumber = Function_Parameter1

UJO CÓ

curso FL

diagrama RelayTask de los bloques de tarea se muestra en Fig. 12. Esta tarea se ejecuta en 500 ms y no hace más que controlar el estado de las dos variables globales por reles Número y RelayStatus. La primera dice que los relés de control, mientras que la SE- Conda indica su estado. Como hemos examinado anteriormente, estas variables son fijadas por RxTask tarea, y en particular por RxDecodeFn. Una vez que haya determinado el relé a ser monitoreados y su estado es adecuadamente actúa sobre la puerta D a través de los bloques de usci- ta. Veamos ahora cómo se gestiona la memoria no

Ling, si el procedimiento es activo. De esta manera, se

volátil, elemento fundamental en el funcionamiento del sistema, ya que contiene la dirección del nodo y

reduce al mínimo indispensable la carga de trabajo de

también los parámetros de configuración. Hay varias maneras de manejar ria una EEPROM memo- en un

precio de un mayor tiempo total para llevar a cabo toda

diseño integrado, y la elección del modo nunca es una cuestión trivial. En este proyecto se decidió utilizar un tipo de espejo de la gestión. Es decir, los datos almacenados en la memoria EEPROM se copian en las ubicaciones apropiadas de memoria de RAM en el inicio del sistema (espejo de la EEPROM). Si durante la vida operativa del sistema, uno de estos cambios de parámetros, un procedimiento que actualiza na EEPROM se inicia (el espejo se copia en la memoria EEPROM). De esta manera, el siguiente reinicio de su carga los datos actualizados. A continuación, el bloque de memoria EEPROM dentro de este proyecto consta de dos partes bien diferenciadas. Una función de inicialización, que copia el contenido de la EEPROM dentro del bili variación "espejo", y una tarea de tiempo de ejecución que es responsable de la actualización, cuando NeCessario. La función de inicialización no es particularmente compleja, por lo que omite. Examinemos vez la tarea, Fig. 13. Como hemos

primer momento los controles de trabajo para ver si

explicado antes, la tarea de la tarea es actualizar los datos en la EEPROM copian- DOVI el contenido de

séptimo episodio Ana- lizzato en detalle el componente

su variabilidad ellos "espejo". Para evitar sobrecargar

práctico de cierta complejidad, lo que nos permitió fijar

la CPU los datos no se copian todos juntos, pero fue construido una copia za secuencial de un ciclo determinado de schedu-

algunos conceptos importantes se observan en

repaso en la fase de los datos de la EEPROM, el la operación. La puesta en imple- es muy simple: en un había una solicitud de actualización de memoria no volátil (EepUpdateRequest = UPDATE_EEP_REQUEST?). En caso afirmativo, se inicia el procedimiento y los datos se guardan en la secuencia, uno por ciclo. La secuencia se llevó a cabo haciendo uso de un bloque de selección múltiple y una variable global (EepromUpdateSe- cuencia). Al final de la secuencia también se restablece la EepUpdateRequest bandera (EepUpdateRequest = UPDATE_EEP_ COMPLETE). Con este análisis se analizaron la tarea más importante. Ahora podemos probar nuestro sistema, utilizando cualquier programa de terminal para comunicarse con el coordinador. Para ejecutar nuestras pruebas se utilizó el software X-CTU proporcionada por Digi XBee módem de radio para la configuración. en La Fig. 14 es posible ver un disparo pantalla- de comunicación en la que se había activado previamente el eco (función se activan y luego desactivado en secuencia de los cuatro relés). En este de ZigBee, así como la presentación de un proyecto

episodios anteriores. En el siguiente y último episodio vamos a analizar (y mo provere- con unas prácticas de proyectos) componentes TCP / IP y el servidor Web.

g

DIGO

Fig. 14 - Ejemplo de comunicación.

En la electrónica ~ de febrero de 2014

139

Para terminar nuestro viaje para descubrir Flowcode, el

curso FL

UJO CÓ

DIGO

innovador entorno de desarrollo gráfico para microcontroladores que le permite escribir código usando objetos gráficos. En

8

este octavo y último episodio vamos a explicar cómo conectar a Ethernet sistemas embebidos usando el protocolo TCP / IP.

curso de programación

Flowcode Francesco y Daniele Ficili Defilippi

N

ella último episodio que introdujo el dispositivo

inalámbrico que permite la comunicación de acuerdo

lanzar un servidor web incorporado que puede enviar datos en tiempo real en la red.

con el estándar ZigBee, y se ilustra su aplicación en Flowcode. Ahora, a la conclusión del curso, vamos a

Desarrollo de aplicaciones de Internet con

discutir cómo implementar sistemas embebidos

Flowcode

enlaces con- Ethernet a la red, capaz de manejar

La gestión de sistemas integrados conectados a la red

protocolos complejos tales como TCP / IP. Este

Ethernet es muy complejo e implica un profundo

problema se abre la puerta a la gestión e

conocimiento de muchos protocolos de comunicación

implementación de sistemas de automatización del

pro, pero Flowcode nos proporciona los componentes

hogar que hoy en día tienden a estar más conectados

nece- sario para resolver este problema de una forma

a la red global de la World Wide Web. Comenzaremos

sencilla e intuitiva. Utilizando el protocolo TCP

nuestra ruta parlan- hacer el protocolo TCP / IP y, al

componentes / IP, UDP y WebServer pueden lograr

final de la apuesta a lograr en unos simples

prácticamente cualquier aplicación ción que incluye una red de comunicaciones Ethernet sin forzarnos a approfondir-

En la electrónica ~ de marzo de 2014

129

que todas las cuestiones. Los componentes de la biblioteca nos permiten manejar el W5100 integrado, gracias al cual se puede conectar directamente a la red Ethernet. Como punto de partida empezamos a examinar el cuello proto TCP / IP. Fig. 1 Subdivisión en la capa del

El protocolo TCP / IP

protocolo TCP /

TCP / IP es un acrónimo de " Transmisión Con- trol Protocolo /

IP.

Internet Protocol "; su protocolo contiene todas las especificaciones necesarias para comunicarse adecuadamente a través de Internet. Se divide en dichas capas "Capa" ( Fig. 1). Cada una de la capa

Dado que la dirección IP se puede cambiar

depende de lo que se encuentra a continuación y sólo puede

dinámicamente, debe basarse en algo fijo e inmutable

comunicarse con los vecinos; cada uno tiene una tarea diferenciada

que pueda identificar a un sistema de red conectada.

usted y paquetes, durante el tránsito hacia las capas inferiores, son

Por esta razón, se utiliza la dirección MAC: es única

cada vez más sulati incap- y, a la inversa, ya que esa fecha se pulen

para cada tarjeta puede conectarse a la red y por lo

por los datos de encapsulación ya no es necesaria. Este tipo de ture

tanto se fija en la fase de producción de la tarjeta y se

arquitec- permite ser capaz de transferir en un dato de "seguro"

asigna automáticamente al final de la línea. Volviendo

entre un ordenador y otro. Las ofertas de protocolo IP con la

al nivel superior, podemos encontrar una capa

recepción / transmisión correcta de los datos; en la actualidad hay

adicional de abstracción: el llamado "puertos de

dos versiones de IP: IPv4 e IPv6. La principal diferencia entre los

comunicación". Cada puerto se utiliza para un tipo

dos es el número de bytes utilizados para codificar de manera uni-

particular de protocolo, pero también es posible usar de

voco las direcciones de red. El protocolo TCP en su lugar se cargó

una manera diferente; el más conocido y más

con la reordenación de paquetes y la reconstrucción de los datos

comúnmente utilizado es la 80, que se utiliza para la

originales sin pérdida de datos. Cada equipo está identificado por

comunicación http, pero hay otros como 20:21 para FTP,

una dirección IP que tifica idéntica forma única dentro de la Internet.

53 para el DNS y muchos más.

La asignación de esta dirección puede ser de tipo dinámico o estático; por lo general podemos decidir si asignar a uno de un tipo u otro, ya que, de ser conectado a un ISP (Internet Service Provider), la dirección real visto por la red será el ISP y no el elegido por nosotros. Cuando queremos llegar a un ordenador conectado a Internet a través de un navegador, escribimos un nombre, por ejempío la dirección real visto por la red será el ISP y no el elegido por nosotros. Cuando queremos llegar a un ordenador conectado a

Con estos fundamentos, podemos ahora que trataremos de examinar el componente que Flowcode pone a disposición para gestionar TCP / IP, UDP, y MAC.

Internet a través de un navegador, escribimos un nombre, por ejempío la dirección real visto por la red será el ISP y no el elegido por

El componente de TCP / IP en Flowcode

nosotros. Cuando queremos llegar a un ordenador conectado a

En la bandeja de componentes en el menú "Pe-riferiche" nos encontramos con el componente

Internet a través de un navegador, escribimos un nombre, por ejempío www.futuranet.it, y esto, por el servicio de DNS, se transformará IP. Por tanto, este proceso permite el uso de los nombres que son más fáciles de recordar que a una secuencia de 4 o 6 números de tres dígitos.

TCP / IP que nos permite gestionar TCP / IP, UDP, y MAC. Para utilizarlo es suficiente para añadir en el panel y posteriormente proceder a la configuración. en Fig. 2 Se muestra el único 'configuración de la página de prisión de propiedades de componente. En primer lugar tenemos que elegir qué versión de la junta EB023 tenemos disponible; Localizar fácilmente esta indicación en el tablero que AC- quistato (si estamos

infor- mación sobre la conexión de red.

130 De marzo de 2014 ~ en Electrónica

CÓDIGO

construyendo una tarjeta personalizada, deducimos de la lizzato uti- componente). Ahora debe introducir la

curso FL UJO

en la dirección IP correspondiente para el uso con el protocolo TCP /

Tabla 1 - macro se puede utilizar con el componente TCP / IP descripción

Nombre de macro

inicializar

Restablece e inicializa el dispositivo Ethernet.

curso FL

UJO CÓ

DIGO

Al llamar a esta macro, se crea un socket capaz de recibir datos transmitidos por la red Ethernet. Mediante el establecimiento de un valor del parámetro:

Create_MAC_Socket

-

El modo promiscuo para leer todo el tráfico que circula por la red sin tener en cuenta la dirección MAC;

-

El modo de difusión que sea capaz de leer los paquetes de difusión;

-

modo de error para también recibir paquetes que contienen errores.

El valor de retorno, si es diferente de cero, indica que la operación de configuración era final exitoso. La macro crea un socket para la transmisión y recepción de datos utilizando el protocolo UDP. Es necesario indicar los parámetros:

Create_UDP_Socket

-

Channel, es decir, el canal elegido para la comunicación (de 0 a 3); es posible utilizar simultáneamente los canales de configuraciones gurado de una manera diferente a partir de un máximo de cuatro;

-

la dirección de la divide en src_port_hi y puerto de origen src_port_lo. El valor de retorno, si es diferente de cero, indica que

la operación de configuración era final exitoso. Crear un socket para la recepción y transmisión de datos a través del protocolo IP.

Create_IP_Socket

Es necesario indicar el canal seleccionado (canal), y el protocolo que pretendemos realizar mediante el conjunto de la ni dos inter- a los parámetros de macro. El valor de retorno, si es diferente de cero, indica que la operación de configuración era final exitoso.

Create_TCP_Socket

Crear un tipo de socket TCP. Necesidades de las mismas configuraciones que se utilizan con el Create_UDP_Socket macro.

Se utiliza con sockets IP y UDP, y se utiliza para establecer la dirección IP y el puerto al que desea transmitir datos. Se toma como parámetros el canal, la

Set_Destination

Set_My_IP

dirección IP y el puerto de destino. Para las conexiones basadas en IP que no es necesario indicar la puerta.

Esta macro se utiliza para cambiar, durante la ejecución, la dirección IP del dispositivo; No es necesario si desea conservar la dirección IP introducida en la ventana de Configuración de componentes. La macro devuelve el estado actual de la toma de corriente. Los valores posibles son diecinueve, pero los principales son:

GetSocketStatus

TCP_Listen

-

0 (SOCK_CLOSED) = el socket está cerrado (se transmiten o reciben datos ni);

-

6 (SOCK_ESTABLISHED) = el zócalo esté listo y la comunicación es activo en el modo pasivo;

-

7 (SOCK_CLOSE_WAIT) = el socket está en la fase de cierre;

-

14 (SOCK_INIT) = el socket está en la fase de inicialización.

Establece el canal elegido (indicado como un parámetro) en modo pasivo de manera que pueda estar listo para recibir datos.

Establece el canal elegido (indicado como un parámetro) en el modo activo de manera que pueda estar listo para transmitir datos en el canal de

tcp_connect

TCP_Close

comunicación. Se necesita como parámetros el valor del canal, la dirección IP y el puerto de destino. Si el valor devuelto es distinto de cero significa que la comunicación se ha establecido con éxito y que luego se puede transmitir datos. Se cierra la conexión TCP a través de una operación activa y el puerto de socket a la espera de la terminación.

Iniciar la transmisión de datos en el canal especificado por los parámetros, pero para que funcione correctamente requiere macro posterior (Tx_sendbyte,

Tx_start

Tx_sendmymac, Tx_sendmymac y Tx_end). La secuencia correcta comienza con un comando de Tx_start, continúa con secuencias Tx_sendbyte, Tx_sendmymac, Tx_sendmymac en el orden elegido (que puede también ser sólo ta utilizza- uno de los tres macro) y termina con Tx_end para realizar el envío de datos en el canal la comunicación.

(Continuación)

Dependiendo del tipo de red que configurar la dirección IP, la cual debe ser de co estadístico tipo y la máscara de subred. La dirección de la pasarela se debe establecer el mismo que el "enrutador" o el módem al que intenta AC cede a Internet, al menos si queremos enviar paquetes fuera de la LAN; si esta dirección estaba mal, sareb- no sea posible comunicarse con los

mundo; la mejor manera de hacerlo es tomar la dirección de un no utilizado actualmente tarjeta de red, por lo que está seguro de que su IP no está activo. Un paso adicional es la configuración de las conexiones; con el fin de funcionar correctamente, debe configurar los pines en los cuarenta que se asignan al pin de interrupción y el PCB Esta configuración puede variar

ordenadores no conectados directamente a la intranet. La configuración de la dirección MAC (dirección de

dependiendo de cómo se conecta la tarjeta a nuestra

hardware) es la parte más delicada: este valor debe ser único en toda la Internet. Para realizar las pruebas dentro de la LAN pueden fijar a cualquier valor:

proyectos personalizada . Examinemos ahora la macro

plataforma o cómo realiz- ziamo el PCB en el caso de Flowcode que pone a disposición para manejar este tipo de comunicaciones a través de Ethernet. en

simplemente que difiere de la de todas las demás tarjetas de red inalámbrica y Ethernet lo pasan por alto. Tabla 1 Se describen en la principal. Estas macros permiten administrar en una red simple de comunicaciones bidireccionales a través del conector Ethernet en diferentes niveles: MAC, UDP y TCP / IP. El componente de TCP / IP es el que nos permite gestionar la principal Protocolo-

En la electrónica ~ de marzo de 2014

131

Tabla 1 - Macro utilizado con el componente TCP / IP (continuación) descripción

Nombre de macro

Tx_sendbyte

Enviar los datos a la memoria intermedia de transmisión para el canal específico. Además del canal se debe indicar el parámetro dado. Como cuestión también puede ser cadenas usadas.

Tx_sendmymac

Enviar en el buffer de transmisión, el canal seleccionado, la dirección MAC actual de la tarjeta.

Tx_sendmyip

Enviar en el buffer de transmisión, el canal seleccionado, la dirección IP establecida en la ventana de configuración del adaptador.

Tx_end

Es la macro que le permite enviar datos físicamente en la línea de comunicación. Compruebe si hay datos disponibles en el canal de recepción de amortiguamiento. El valor de retorno, si es diferente de cero, lo que indica que hay datos

Rx_data_available

disponibles. Esta macro se utiliza para inicializar la memoria intermedia para recibir datos si que ya era. En la práctica restablece el índice con la que el tampón se escanea con el Rx_data_size macro.

Rx_data_size

Macro se utiliza para saber cuántos bytes están disponibles en el buffer de recepción. Macro utiliza para leer el encabezado de los datos recibidos.

Se toma como parámetros de entrada del canal de comunicación y el índice IDX de bytes que desea leer. Dependiendo del tipo de comunicación utilizado en un canal seleccionado puede tener la siguiente información. -

modo UDP

● Idx 0-1: Tamaño del paquete (MSB idx = 0); ● Idx 2-5: Dirección IP de origen (MSB idx = 2); ● Idx 6-7: dirección de puerto (MSB idx = 7). -

modo IP



Rx_readheader

tamaño Header = 6;

● Idx 0-1: Tamaño del paquete (MSB idx = 0); ● Idx 2-5: Dirección IP de origen (MSB idx = 2). -

modo MAC

● tamaño Header = 3; ● Idx 0-1: Tamaño del paquete (MSB idx = 0); ● Idx 2: Estado de paquetes recibidos: ■ Bit 7 = 1 indica que la dirección MAC de destino de la tarjeta es equivalente; ■ Bit 5 = 1 indica que la dirección es transmitido tipo; ■ Bit 4 = 1 indica que el paquete contiene errores. Rx_readbyte

Lee un byte desde el canal elegido búfer de recepción que se devuelve como un valor de retorno.

Rx_skipbytes

Que le permite "saltar" de los datos de la memoria intermedia de recepción.

Rx_match2bytes Rx_match4bytes Rx_match6bytes

Rx_match_mymac Rx_match_myip

Ley 2/4/6 byte del buffer de recepción y los compara con los indicados en los parámetros con los que se le llama. Restitui- SCE un valor diferente de cero si los valores coinciden. Ley 6 bytes desde el buffer de recepción y compararlos con la dirección MAC con la que la tarjeta ha sido configurado. Se devuelve un valor distinto de cero si los valores coinciden.

Lee 4 bytes desde el buffer de recepción y los compara con la dirección IP con la que la tarjeta ha sido configurado. Se devuelve un valor distinto de cero si los valores coinciden.

les de comunicación Ethernet, sino para crear un servidor web para forma aún más sencilla que tenemos un componente específico; este componente, siempre sujeto a ciertas restricciones, permite a los desarrolladores implementar el servidor Web aún más sencilla e intuitiva.

El servidor web de componente

La forma más inmediata para comunicarse con los sistemas remotos, incluso miles de kilómetros de distancia, es el uso de páginas web sencillas, ya que sólo requiere que ambos sistemas están conectados a Internet. Todo el sistema es muy barato y es muy intuitivo de usar. Realiz- Zare un servidor Web en un

Flowcode viene en nuestra ayuda al proporcionar un componente específico que encontramos en la bandeja de componentes en el menú "Dispositivos", como Servidor web.

dispositivos o sistemas muy complicados, que se pueden realizar de una manera muy sencilla gracias al uso de programados, pero; por lo que en este caso. Fig. 2 - Propiedad ver el componente TCP / IP.

132 De marzo de 2014 ~ en Electrónica

cómo

CÓDIGO

En episodios anteriores hemos visto cómo los

curso FL UJO

equipo es AB- suficiencia simple, pero en una plataforma embebida con potencia de cálculo limitada se vuelve mucho más compleja. Por estas razones,

Tabla 2 - Macro utilizable con el WebServer componente descripción

Nombre de macro

curso FL

UJO CÓ

DIGO

inicializar

Restablece e inicializa el dispositivo Ethernet. Esta macro debe llamarse antes de cualquier otro macros para cualquier gestión de servidor Web.

La macro crea un socket para recibir y transmitir datos al servidor Web. Es necesario indicar los parámetros: CreateServerSocket

-

Canalizar el canal elegido para la comunicación (de 0 a 3); es posible utilizar simultáneamente los canales configurados de una manera diferente a partir de un máximo de cuatro;

-

la dirección del puerto desde el que transmitir y recibir los datos divididos en src_port_hi y src_port_lo. El valor de retorno, si

es diferente de cero, indica que la operación de configuración era final exitoso.

CheckSocketActivity Toma como entrada el canal en el que desea realizar el control de la actividad.

Que periódicamente se debe invocar el fin de permitir la gestión de las solicitudes entrantes.

nos vemos en La Fig. 3, la ventana de la con- figuración

de forma remota. El código debe ser compatible con el

componente es sencilla e intuitiva va: tenga en cuenta que es

estándar HTML, pero esto no impide que introduzca

exactamente idéntico al componente TCP / IP y por lo tanto

comandos JavaScript u otro len- ya interpretado por el

pueden ser configurados de la misma manera. Esto se debe

navegador remoto. La característica clave del

al hecho de que el componente de servidor Web

componente servidor web es la posibilidad, oferta, para incluir en el valor mico Dyna fuente HTML de algunas variables; de esta manera es las variables deseadas (como máximo cuatro) se pueden monitorizar de forma remota. Con el fin de BA ver, dentro del código HTML, el nombre de la variable, incluyendo el inserendo-%. Los nombres de variables son, por tanto, B001 utilizable, B002, B003 y B004. Hay algunas limitaciones en el tipo de las variables seleccionadas porque no pueden ser de tipo cadena o punto flotante. En el ejemplo práctico vamos a utilizar este simple estratagema con el propósito de Reac- lizzare una unidad de control para controlar la temperatura.

Fig. 3 - Webserver Propiedades de componente.

Proyecto práctica: Unidad para la

monitorización de la temperatura a través del servidor Web

El servidor Web integrado que se harán nos permitirá controlar de forma remota, trans leve una conexión a Internet, los últimos cuatro temperaturas medidas por nuestro sistema. Para poner en práctica el proyecto necesitamos los siguientes componentes:

- EB006 " Junta PICmicromultiprogrammer- USB "(PIC18F4685 y cuarzo 19,6608 MHz); Fig. 4 - Webserver Propiedades de componente para la descripción de las páginas HTML.

- EB023 "tablero de Internet";

No es nada más que un gerente preconfigurado de páginas

- EB016 "Placa de pruebas";

web basadas en TCP / IP. Las diferencias residen en la

- del sensor de temperatura LM35.

pestaña de configuración siguiente, se muestra en la Fig. 4.

Ponemos en contacto a las tarjetas como se muestra en Fig. En la parte superior tenemos que introducir el nombre de las

5 posicionamiento EB023 la tarjeta C en la puerta y la

páginas, mientras que en el espacio central tiene que editar el

tarjeta será prototipazio- EB016 en los puertos A y B. Nos

código que tenemos la intención de mostrar en la página

alimentar el sensor, como se indica en la segunda

requerida para

En la electrónica ~ de marzo de 2014

133

listado 1

servidor web Ejemplo temperatura var = new Array (); Temperaturas [0] =% Boo1% - 128; Temperaturas [1] =% BOO2% - 128; Temperatura [2] =% BOO3% 128; Temperatura [3] =% BOO4% - 128; función de temperatura (x) {

si (x / 20