Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CODIGO: 1117534469
GRUPO: 243036_24
CEAD FLORENCIA
JULIO 2019
Código programa pseudocódigo
Interface gráfica :
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:
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:
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:
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.
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.
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.
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.
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
Donde:
[0.5] = 𝑡𝑖𝑒𝑚𝑝𝑜 𝑎𝑙 50%
[1] = 𝑡𝑎𝑚𝑎ñ𝑜 𝑑𝑒 𝑚𝑎𝑡𝑟𝑖𝑧 1, 𝑝𝑎𝑟𝑎 𝑚𝑎𝑡𝑟𝑖𝑧 𝑑𝑒 8𝑥8
[24 60 126 255 255 126 60 24] = 𝑚𝑎𝑡𝑟𝑖𝑧 𝐴
[76 76 76 255 255 76 76 76] = 𝑚𝑎𝑡𝑟𝑖𝑧 𝐵
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