Está en la página 1de 20

PASO 6-CONSTRUCCION GRUPAL

JAROL ANDRES LLANOS LOZADA

CODIGO: 1117534469

TUTOR: CAMILO ARTURO LAGOS

GRUPO: 243036_24

CURSO: SOFTWARE PARA LA INGENIERIA

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD

ESCUELA CIENCIA Y TEGNOLOGIA

CEAD FLORENCIA

JULIO 2019
Código programa pseudocódigo

Interface gráfica :

Se ha desarrollado para dar solución a la parte de comunicación entre usuario y maquina la


siguiente interface gráfica, la cual cuenta con un menú desplegable para escoger el tamaño de la
matriz con las opciones de 8x8 y 16x16; un botón slider para variar el tiempo de duración de las
imágenes generadas; dos matrices de 8x8 o 16x16 según se seleccione en el menú desplegable,
para que el usuario escoja los grupos de leds que encienden en cada transición; Un botón de inicio
para empezar la secuencia, un botón de stop para detenerla y un botón de reset para volver a
configurar las matrices y el tiempo de las transiciones.
Interface gráfica con tamaño de matriz de 8x8 seleccionada

Interface gráfica con tamaño de matriz de 16x16 seleccionada


3.1 Comunicación Serial con Matlab :

Para Garantizar el funcionamiento del programa, una de las partes más importantes es la
de poder comunicar la interface GUI de Matlab con el microcontrolador que va a controlar
la matriz de LEDS; Es por ello que en busca de resolver la comunicación serial con
Matlab, encontramos una información muy clara y precisa para nuestras necesidades en
los siguientes enlaces a YouTube, de los autores Genaro Alfredo Alcázar Marín y el
YouTuber que se hace llamar LED:

https://www.youtube.com/watch?v=faZZTyDa7oM

https://www.youtube.com/watch?v=18zvnocWJ_s

De forma que hemos realizado las siguientes pruebas para aprender a comunicar por
puerto serial desde Matlab:

- Creamos un circuito lógico en Proteus utilizando un conector seria DB9 conectado a


una terminal virtual; Además, se configuró el puerto serial como COM2, 9600
baudios, 8 bits de datos y sin paridad.
- Creamos y abrimos por comandos un puerto COM1 con 9600 baudios sin especificar
paridad en Matlab:
- Conectamos virtualmente los puertos COM1 y COM2 desde el software Virtual Serial
Port para emular una comunicación entre Matlab con un dispositivo externo.

- Enviamos desde Matlab por el puerto serial


Se verifica en la terminal de Proteus que el mensaje enviado desde Matlab fue
recibido.
ALGORITMO

Uitable4 y Uitable5:

Corresponden a las tablas en la que se configuran el encendido y apagado de los led para
las imágenes que indican el pase o la espera a los peatones. En el siguiente código se
especifica el tamaño de estas matrices de 8x8 por defecto precargadas con valor cero en
todas sus celdas, habilitamos edición de las celdas, escogemos el tamaño de las celdas a 20
pixeles y configuramos la posición de las dos tablas en la ventana gráfica.
Adicionalmente identificamos las dos tablas o matrices con las letras A y B, y
seleccionamos la posición de las letras en la interface gráfica.
Matriz Size:

Este es un popupmenu desplegable que permite seleccionar el tamaño de la matriz que


queremos utilizar para desplegar las imágenes de acuerdo al tamaño de la matriz de leds
a implementar; Para este diseño se establecen dos opciones a escoger, una para matriz de
8x8 y la segunda opción para matriz de 16x16.

En este código nos valemos de la característica del menú desplegable que asigna el valor
1 a la variable local hObject si seleccionamos la primera opción del menú ‘Matriz size’
(opción 8x8), y asigna el valor 2, si selecciona la segunda opción (opción 16x16),
tomamos los valores de esa variable y se los asignamos a la variable size.
Luego con un condicional ‘if else’, modificamos las características de las uitables; si se
selecciona la opción 1, las características de las uitables son idénticas a las opciones por
defecto de dichas tablas, pero si seleccionamos la opción 2 para matriz de 16x16,
modificamos el número de celdas, la posición de las tablas y los nombres de las matrices
lo cambiamos de A y B por C y D.

Time:
Time es gráficamente un slider con el cual podemos arrastrar un botón que nos permite
variar el tiempo de duración de cada imágenes en la matriz de leds.

El código asociado al botón slider solo captura la posición del slider, y lo convierte en un
valor numérico que luego es almacenado en la variable time.

Botón enviar:

Con este botón enviamos al microcontrolador los parámetros seleccionados para las
imágenes a generar en la matriz led. Los parámetros seleccionados corresponden al
tamaño de la matriz, el tiempo de duración de las imágenes y los arreglos de leds que
estarán encendidos o apagados para cada imagen a generar.

Para realizar todos los pasos mencionados, el código debe hacer varios pasos, a
continuación vemos que hace cada parte del código:

Incialmente, el usuario ingresa unos y ceros en las Uitables de la interface grafica, esos
valores son leidos con la accion del boton ‘enviar’, el cual toma todos los valores
ingresados en cada tabla y los guarda por separados en dos vectores llamados A y B.
Luego consultamos el tamaño de los vectores y los guardamos en la variable n; Lo
anterior es para crear dos vectores M y N del mismo tamaño, inicialmente llenos de ceros
pero despues en el ciclo for reemplazamos los ceros por el contenido de los vectores A y
B, pero los elementos se han transformado a formato string.
Una vez tenemos guardados los datos ingresados por el usuario, puesto que las columnas
o filas ingresadas en la interface gráfica son grupos de ceros y unos, procedemos tomar
los datos por cada columna para convertirlas en valores equivalentes en números
decimales:

Transformando a decimal el numero binario formado en cada columna

Para lograr ese objetivo utilizamos el siguiente ciclo for anidado, tomamos los valores
ingresados por usuario y guardados en M y N, los procesamos en el ciclo for y guardamos
los equivalentes decimales de la representación de las columnas en los vectores C y D:

El siguiente paso que hacemos es llamar las variables de interés que queremos
enviar al microcontrolador, las matrices del diseño de las imágenes procesadas C
y D, el valor del tiempo establecido de duración de las imágenes y el tamaño
escogido de las matrices; Volvemos a cambiar el formato a string para cada
variable:
Por último, preparamos el puerto serial borrando el rastro de envío de datos
anteriores, creamos el puerto COM1 a 9600 baudios y lo abrimos; empezamos a
enviar los datos al terminal externo comenzando por el envío del tiempo
seleccionado, seguido por el envío del tamaño de la matriz, La matriz con la
información de la primera imagen C, y la matriz con la información de la segunda
imagen D. Finalmente cerramos el puerto serial.

4.1 Botón Start:

Este botón está programado para enviar una señal de arranque al microcontrolador para
que inicie las representaciones de las imágenes en la matriz led.

El código cuenta con una variable global K, la cual se carga con el valor cero, lo cual
inhabilitará un próximo botón que más adelante explicaremos; Seguidamente preparamos
el puerto COM1 borrando cualquier resto de alguna comunicación anterior con la
instrucción delete, creamos el puerto serial COM1 a 9600 baudios, procedemos a abrir el
puerto y a enviar la palabra ‘start’ al microcontrolador; por ultimo cerramos el puerto y
registramos las variables globales de esta función para que pueda ser leída por las demás
funciones.

4.2 Botón Stop :


Este botón está programado para enviar una señal de parada al microcontrolador para que
detenga las representaciones de las imágenes en la matriz led.

El código también cuenta con la variable global K, la cual se carga en esta función con el
valor uno, lo cual habilita el próximo botón que más adelante explicaremos;
Seguidamente preparamos el puerto COM1 borrando cualquier resto de alguna
comunicación anterior con la instrucción delete, creamos el puerto serial COM1 a 9600
baudios, procedemos a abrir el puerto y a enviar la palabra ‘stop’ al microcontrolador; por
ultimo cerramos el puerto y registramos la variable globale de esta función para que esta
pueda ser leída por las demás funciones.

4.3 Botón reset:

Este botón se utiliza para modificar el diseño de las imágenes desplegadas en el


microcontrolador, para ello se debe pulsar el botón stop, lo cual detiene el trabajo del
microcontrolador y lo lleva a un estado de recepción, permitiendo que desde la GUI
diseñemos otra imagen para volver a enviar hacia el microcontrolador.

El código inicia leyendo la variable global K la cual inicia por defecto con el valor 1 y es
alterada durante la ejecución de los botones stop y start a los valores 1 y 0
respectivamente, cargamos el valor de k en r y mediante un condicional if, verificamos
cual fue el último botón pulsado entre stop y start; si el ultimo botón pulsado fue stop, esto
hace que se cumpla el condicional if y el código del botón reset se ejecute.

Lo primero que reseteamos es el botón slider llevándolo a la posición inicial, también el


menú desplegable del tamaño de las matrices lo llevamos a la opción 1 para matrices de
8x8 y a continuación llevamos las uitables a la forma que tienen estas tablas por defecto
modificando su tamaño, poniendo las celdas con valor cero, habilitando la edición de
celdas, tamaño de 20 pixeles y ubicándolas en la posición inicial.

Por último, volvemos a renombrar las matrices con las letras A y B, y ubicamos la
posición de las letras sobre las matrices de las uitables.
Con todo el código que homos expuesto queda solucionado el problema del curso hasta el entorno
de Matlab, Está pendiente crear un código para un microcontrolador que interprete las señales
enviadas desde Matlab y ejecute las instrucciones sobre la matriz de leds.
1. PRUEBAS DE FUNCIONAMIENTO DE LA INTERFACE
GRAFICA

5.1 Ejecutamos la aplicación:

5.2 Seleccionamos tamaño de matriz a 16x16:


Movemos el botón slider hasta el máximo:

Pulsamos el botón reset:


Llenamos las matrices A y B con unos y ceros:

Escogemos un tiempo de 50% aproximadamente:

Pulsamos el botón enviar:

Verificamos la información recibida en una terminal virtual:


𝐼𝑛𝑓𝑜𝑟𝑚𝑎𝑐𝑖𝑜𝑛 𝑟𝑒𝑐𝑖𝑏𝑖𝑑𝑎 = [0.5][1][24 60 126 255 255 126 60 24][76 76 76 255 255 76 76
76]

Donde:
[0.5] = 𝑡𝑖𝑒𝑚𝑝𝑜 𝑎𝑙 50%
[1] = 𝑡𝑎𝑚𝑎ñ𝑜 𝑑𝑒 𝑚𝑎𝑡𝑟𝑖𝑧 1, 𝑝𝑎𝑟𝑎 𝑚𝑎𝑡𝑟𝑖𝑧 𝑑𝑒 8𝑥8
[24 60 126 255 255 126 60 24] = 𝑚𝑎𝑡𝑟𝑖𝑧 𝐴
[76 76 76 255 255 76 76 76] = 𝑚𝑎𝑡𝑟𝑖𝑧 𝐵

En donde los elementos de la matriz A y B representan en número decimal columnas de 8 bits:

[𝟐𝟒 𝟔𝟎 𝟏𝟐𝟔 𝟐𝟓𝟓 𝟐𝟓𝟓 𝟏𝟐𝟔 𝟔𝟎 𝟐𝟒] = 𝒎𝒂𝒕𝒓𝒊𝒛 𝑨

[𝟕𝟔 𝟕𝟔 𝟕𝟔 𝟐𝟓𝟓 𝟐𝟓𝟓 𝟕𝟔 𝟕𝟔 𝟕𝟔] = 𝒎𝒂𝒕𝒓𝒊𝒛 𝑩


REFERENCIAS

MathWorks. (2009). TheMathworks. Recuperado de


http://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf

Eike Rietsch. (2010). An Introduction to Scilab from a Matlab User's Point of View.
Version 5.2. Recuperado de:
https://wiki.scilab.org/Tutorials?action=AttachFile&do=get&target=Scilab4Matlab.pdf

Hunt Brian R. (2001), A guide to Matlab for beginners and experienced users. Cambridge
University: Press. Recuperado de:
http://bibliotecavirtual.unad.edu.co/login?url=http://search.ebscohost.com/login.aspx?direct
=true&db=edshlc&AN=edshlc.009017307.4&lang=es&site=eds-live&scope=site

También podría gustarte