timers

Dependencies:   mbed

main.cpp

Committer:
Alonso
Date:
2015-05-29
Revision:
0:fb3a37cd5aac

File content as of revision 0:fb3a37cd5aac:

#include "mbed.h"
/*  En esta practica se muestra la configuracion para el uso de ISR(interrupt serrvice rutine)
    del microcontrolador que usa la FRDM, la practica trata de cambiar el estado del led rgb
    en sus 3 colores diferentes, rojo, verde y azul, en peridos de 1 segundo. Para la demostracion
    se programa una maquina de estados*/
    
Ticker rgb; // se le asigna un identificador a la ISR que se va a utilizar llamado rgb.

DigitalOut rgb_rojo(LED_RED,1); // se configura el led rojo como salida, estado incial apagado
DigitalOut rgb_verde(LED_GREEN,1);// se configura el led verde como salida, estado incial apagado
DigitalOut rgb_azul(LED_BLUE,1);// se configura el led azul como salida, estado incial apagado
int estado_led=1; // variable que se usa en la maquina de estados para el cambio de color del rgb

void blink_rgb(void) // funcion que se llama cada 1 segundo por la ISR
{
    switch(estado_led)
    {
        case 1: 
            rgb_rojo = 0; 
            rgb_verde = 1;
            rgb_azul = 1;
            estado_led = 2; // se cambia el valor de variable a 2
            break;
        case 2:
            rgb_rojo = 1;
            rgb_verde = 0;
            rgb_azul = 1;
            estado_led = 3;// se cambia el valor de variable a 3
            break;
         case 3:
            rgb_rojo = 1;
            rgb_verde = 1;
            rgb_azul = 0;
            estado_led = 1;// se resetea el valor de la variable a 1.
            break; 
        default: // led rgb apagado
            rgb_rojo = 1;
            rgb_verde = 1;
            rgb_azul = 1;
            break;
    }
}

int main() 
{
    rgb.attach(&blink_rgb,1.0);// confiracion de la ISR para que se genere cada 1 segundo indicando la funcion que se ejecutara.
       
    while(1) 
    {
        
    }
}