Led_RGB para la Tarjeta FRDM-KL46Z
Dependencies: mbed
main.cpp
- Committer:
- Antulius
- Date:
- 2019-06-26
- Revision:
- 0:a28c211799f1
File content as of revision 0:a28c211799f1:
/* ########################################################################### ** Archivo : main.c ** Proyecto : FRDM-KL46Z_Led_RGB ** Procesador : MKL46Z256VLL4 ** Herramienta : Mbed ** Version : Driver 01.01 ** Compilador : GNU C Compiler ** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0 ** Descripción : ** Este proyecto hace... ** This module contains user's application code. ** Componentes : GPIO, Timer, etc . ** Configuraciones : Includes, Stacks y Drivers externos ** Autores : ** ATEAM Development Group: ** - Antulio Morgado Valle ** ** Versión : Beta ** Revisión : A ** Release : 0 ** Bugs & Fixes : ** Date : 20/10/2019 ** Added support for Led_RGB ** 22/09/2018 ** Added LCD Menu, Beta version (with bugs) ** ** ###########################################################################*/ /* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : Includes :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ #include "mbed.h" #include "Led_RGB.h" /* :............................................................................... : Definiciones :............................................................................... */ #define Ticker_Rate 1000 // Periodo en uSeg /* +------------------------------------------------------------------------------- | Configuración de Puertos +------------------------------------------------------------------------------- */ Ticker TimerInt; // Inicializa la Interrupción por Timer // Definición de Led's para la FRDM-KL46Z DigitalOut led_monitor(LED_GREEN); // PTD5 LED1 DigitalOut led_testigo(LED_RED); // PTE29 LED2 // Definición del Led RGB para la FRDM-KL46Z //DigitalOut Led_Rojo (PTE2); // PTE2 LED_ROJO //DigitalOut Led_Verde(PTE3); // PTE3 LED_VERDE //DigitalOut Led_Azul (PTE6); // PTE6 LED_AZUL // Host PC Communication channels Serial terminal(USBTX, USBRX); // Tx, Rx //Serial terminal(PTA2,PTA1); // Terminal Serial //Serial terminal(PTE0, PTE1); // Tx, Rx Using MAX3232 or BlueTooth /* +------------------------------------------------------------------------------- | Variables Globales de Usuario +------------------------------------------------------------------------------- */ uint16_t Rate=Ticker_Rate/2; // Velocidad de barrido (500us = 0.5ms) uint16_t counter=250; // Cuenta inicial de 250us uint8_t Seleccion; // Seleccion de opción para el menú /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ void TimerInt_OnInterrupt(void); void Blinking_Led(void); /* #=============================================================================== | | P R O G R A M A P R I N C I P A L | #=============================================================================== */ int main() { // Inicialización de variables, puertos e interrupciones TimerInt.attach_us(&TimerInt_OnInterrupt, Rate); // Le asigna el periodo de barrido de 1ms (Rate=1000) terminal.baud(115200); // Se configura la velocidad de transmisión e inicia la comunicación serial. terminal.printf(" System is Wake Up!.\n\r"); while (true) // El Lazo del Programa principal está aquí !!! { printf("LED RGB \r\n\n"); inicio: printf("Elija la Opcion Deseada: \r\n"); printf("Que Color deseas? \r\n\n"); printf("1 Rojo \r\n"); printf("2 Verde \r\n"); printf("3 Ambar \r\n"); printf("4 Azul \r\n"); printf("5 Magenta \r\n"); printf("6 Turqueza \r\n"); printf("7 Blanco \r\n"); printf("0 Apagado \r\n\n"); Blinking_Led(); opcion: Seleccion=getchar(); printf("Opcion selecionada: "); printf("%c \n\r",Seleccion ); if (Seleccion >='8') { printf("Seleccion equivocada! \r\n"); printf("Vuelve a intentarlo... \r\n\n"); goto opcion; } switch (Seleccion) { case '1':printf("Color seleccionado: ROJO \r\n"); Color_RGB (RED); break; case '2':printf("Color seleccionado: VERDE \r\n"); Color_RGB (GREEN); break; case '3':printf("Color seleccionado: AMBAR \r\n"); Color_RGB (AMBER); break; case '4':printf("Color seleccionado: AZUL \r\n"); Color_RGB (BLUE); break; case '5':printf("Color seleccionado: MAGENTA \r\n"); Color_RGB (MAGENTA); break; case '6':printf("Color seleccionado: TURQUEZA \r\n"); Color_RGB (CYAN); break; case '7':printf("Color seleccionado: BLANCO \r\n"); Color_RGB (WHITE); break; default: printf("Todos los LEDs Apagados!!! \r\n"); Color_RGB (BLACK); break; } printf("\n\r Deseas cambiar de color? \r\n"); printf("0 = No 1 = Si \r\n\n"); Seleccion=getchar(); if (Seleccion >='1') goto inicio; printf("Desea Terminar el Programa? \r\n\n"); printf("No = 0 Si = 1 \r\n\n"); Seleccion=getchar(); if (Seleccion == '0') goto inicio; printf("Realmente Desea Terminar el Programa? \r\n\n"); printf("No = 0 Si = 1 \r\n"); Seleccion=getchar(); if (Seleccion == '0') goto inicio; goto fin; } fin: printf("Se acabo! \r\n"); } /* END main */ /* ................................................................................ : Rutinas de los Vectores de Interrupción ................................................................................ */ void TimerInt_OnInterrupt() // Rutina de Atención al Ticker { counter--; // Aquí va la Rutina de Servicio ! if (!counter) { led_monitor = !led_monitor; // Parapadeo del LED por Interrupción (Toggle the LED) counter = Rate; // Restablece el contador } } /* END Events */ /* ________________________________________________________________________________ | | Funciones Prototipo |_______________________________________________________________________________ */ // Las Funciones Prototipo van aquí ! void Blinking_Led() // Software Blinking routine for LED { // The on-board LED is connected, via a resistor, to +3.3V (not to GND). // So to turn the LED on or off we have to set it to 0 or 1 respectively led_testigo = 0; // turn the LED on wait_ms(200); // 200 millisecond led_testigo = 1; // turn the LED off wait_ms(1000); // 1000 millisecond terminal.printf("Counter Finish! \r"); } /* END Program */ /* END Mbed */