viernes, 13 de diciembre de 2013

COLORES-TIEMPO



DESCRIPCIÓN

Se programará el microcontrolador FRDM-KL25Z para mostrar, durante tiempos diversos, distintos colores, empleando combinaciones del LED tricolor incluido.



OBJETIVO

Aprender a declarar y utilizar estructuras.


REQUERIMIENTOS.

 HARDWARE

Para esta práctica se requiere solamente el microcontrolador FRDM-KL25Z, que incluye un LED tricolor RGB (Rojo-Verde-Azul).


ARQUITECTURA DEL SOFTWARE.

Tabla de funciones


Funciones en main
void f_LED(int);
// Función para combinar el encendido del LED tircolor y obtener un color específico
void inicio(void);
// Función para inicializar la variable "timmer"
void LED_Func(Color_tiempo *ap);
// Función que usará los datos en el apuntador.




Tabla 1 Funciones empleadas en el programa principal




Diagramas de flujo

Fig. 1 Diagrama de flujo de la función main.



                                           
a)                                                                                            b).
Fig. 2 Diagramas de flujo de las funciones: a). inicio ; b). LED_Func , empleadas en main.


Fig. 3 Diagrama de flujo de la función f_LED, empleada en main.

Fig. 4 Diagrama de flujo de la función TI1_OnInterrupt, empleada en Events.c.
 



Descripción de variables y constantes



Processor Expert
typedef struct {int color; int tiempo;} Color_tiempo;
// Define la estructura llamada Color_tiempo
enum colores{negro, azul, verde, cyan, rojo, magenta, amarillo, blanco};
// Enumera las posibles combinaciones de colores: negro=0, azul=1, verde=2 ...etc.
enum bit_color{b_azul=1,b_verde=2,b_rojo=4};
// Enumera los bits de los LEDs disponibles en el Microcontrolador


extern int timmer;
// Variable externa "timmer", radicada en Events.c
int color_led;
//Variable utilizada para decidir el color deseado


Color_tiempo arr_color_tiempo[]= {{negro,30},{azul,20},{verde,10},{cyan,30},{magenta,20}, {amarillo,10},{blanco,30},{0,0}};
// Carga los valores deseados en la estructura "Color_tiempo"
Color_tiempo *apu_color_tiempo=arr_color_tiempo;
// Pone el apuntador en la estructura "Color_tiempo"


 
Tabla 2 Tabla de variables empleadas en el programa principal



Events.c
int timmer;
// Variable empleada para llevar control del tiempo de encendido


               

Tabla 3 Tabla de variables empleadas en Events.c


Componentes

Se requiere incluir lo siguiente:
  1. Tres componentes BitIO
  2. Un componente TimerInt
(Nota: Para detalles sobre cómo incluir componentes, revisar la práctica “Encender-apagar un LED”).


Configuración de los componentes BitIO

Seleccionando el componente que será editado, en el inspector de componentes se deben hacer los cambios señalados en la Fig. 5.
De acuerdo con el manual de usuario del microcontrolador, los puertos del LED tricolor son:
Cátodo rojo       PTB18
Cátodo verde    PTB19
Cátodo azul        PTD1
En la figura se muestra el ejemplo para utilizar el cátodo azul, por lo tanto se selecciona el puerto PTD1, para un mejor manejo dentro del programa, se asigna al componente un nombre acorde, por ejemplo: LED_Azul.
Se selecciona al componente como salida (Output).
Para utilizar los cátodos rojo y verde, se debe seguir un procedimiento similar al descrito, empleando los puertos y nombres correspondientes.

 
Fig. 5 Configuración del componente BitIO


Configuración del componente TimerInt

Seleccionando el componente que será editado, en el inspector de componentes se deben hacer los cambios señalados en la Fig. 6.
Se escoge la fuente: LPTMR0_CMR y se designa un tiempo de interrupción de 100 ms.

Fig. 6 Configuración del componente de TimerInt

 
Prueba de componentes

Una vez concluida la configuración de los componentes, en la ventana Components, se da click en el ícono de la esquina superior derecha, para generar e incluir en el Processor Expert el código de los componentes añadidos al proyecto. (Ver Fig. 7)

Fig. 7 Generación de código para el Processor Expert.


PROGRAMA FINAL



EVIDENCIAS.

(FOTOS)

REFERENCIAS.

“FRDM-KL25Z User's Manual”. Freescale.

No hay comentarios:

Publicar un comentario