Led_RGB para la Tarjeta FRDM-KL46Z

Dependencies:   mbed

Committer:
Antulius
Date:
Wed Jun 26 00:42:00 2019 +0000
Revision:
0:a28c211799f1
Led_RGB para la Tarjeta FRDM-KL46Z

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Antulius 0:a28c211799f1 1 /* ###########################################################################
Antulius 0:a28c211799f1 2 ** Archivo : main.c
Antulius 0:a28c211799f1 3 ** Proyecto : FRDM-KL46Z_Led_RGB
Antulius 0:a28c211799f1 4 ** Procesador : MKL46Z256VLL4
Antulius 0:a28c211799f1 5 ** Herramienta : Mbed
Antulius 0:a28c211799f1 6 ** Version : Driver 01.01
Antulius 0:a28c211799f1 7 ** Compilador : GNU C Compiler
Antulius 0:a28c211799f1 8 ** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0
Antulius 0:a28c211799f1 9 ** Descripción :
Antulius 0:a28c211799f1 10 ** Este proyecto hace...
Antulius 0:a28c211799f1 11 ** This module contains user's application code.
Antulius 0:a28c211799f1 12 ** Componentes : GPIO, Timer, etc .
Antulius 0:a28c211799f1 13 ** Configuraciones : Includes, Stacks y Drivers externos
Antulius 0:a28c211799f1 14 ** Autores :
Antulius 0:a28c211799f1 15 ** ATEAM Development Group:
Antulius 0:a28c211799f1 16 ** - Antulio Morgado Valle
Antulius 0:a28c211799f1 17 **
Antulius 0:a28c211799f1 18 ** Versión : Beta
Antulius 0:a28c211799f1 19 ** Revisión : A
Antulius 0:a28c211799f1 20 ** Release : 0
Antulius 0:a28c211799f1 21 ** Bugs & Fixes :
Antulius 0:a28c211799f1 22 ** Date : 20/10/2019
Antulius 0:a28c211799f1 23 ** Added support for Led_RGB
Antulius 0:a28c211799f1 24 ** 22/09/2018
Antulius 0:a28c211799f1 25 ** Added LCD Menu, Beta version (with bugs)
Antulius 0:a28c211799f1 26 **
Antulius 0:a28c211799f1 27 ** ###########################################################################*/
Antulius 0:a28c211799f1 28 /*
Antulius 0:a28c211799f1 29 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Antulius 0:a28c211799f1 30 : Includes
Antulius 0:a28c211799f1 31 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Antulius 0:a28c211799f1 32 */
Antulius 0:a28c211799f1 33 #include "mbed.h"
Antulius 0:a28c211799f1 34 #include "Led_RGB.h"
Antulius 0:a28c211799f1 35
Antulius 0:a28c211799f1 36 /*
Antulius 0:a28c211799f1 37 :...............................................................................
Antulius 0:a28c211799f1 38 : Definiciones
Antulius 0:a28c211799f1 39 :...............................................................................
Antulius 0:a28c211799f1 40 */
Antulius 0:a28c211799f1 41 #define Ticker_Rate 1000 // Periodo en uSeg
Antulius 0:a28c211799f1 42 /*
Antulius 0:a28c211799f1 43 +-------------------------------------------------------------------------------
Antulius 0:a28c211799f1 44 | Configuración de Puertos
Antulius 0:a28c211799f1 45 +-------------------------------------------------------------------------------
Antulius 0:a28c211799f1 46 */
Antulius 0:a28c211799f1 47 Ticker TimerInt; // Inicializa la Interrupción por Timer
Antulius 0:a28c211799f1 48 // Definición de Led's para la FRDM-KL46Z
Antulius 0:a28c211799f1 49 DigitalOut led_monitor(LED_GREEN); // PTD5 LED1
Antulius 0:a28c211799f1 50 DigitalOut led_testigo(LED_RED); // PTE29 LED2
Antulius 0:a28c211799f1 51 // Definición del Led RGB para la FRDM-KL46Z
Antulius 0:a28c211799f1 52 //DigitalOut Led_Rojo (PTE2); // PTE2 LED_ROJO
Antulius 0:a28c211799f1 53 //DigitalOut Led_Verde(PTE3); // PTE3 LED_VERDE
Antulius 0:a28c211799f1 54 //DigitalOut Led_Azul (PTE6); // PTE6 LED_AZUL
Antulius 0:a28c211799f1 55 // Host PC Communication channels
Antulius 0:a28c211799f1 56 Serial terminal(USBTX, USBRX); // Tx, Rx
Antulius 0:a28c211799f1 57 //Serial terminal(PTA2,PTA1); // Terminal Serial
Antulius 0:a28c211799f1 58 //Serial terminal(PTE0, PTE1); // Tx, Rx Using MAX3232 or BlueTooth
Antulius 0:a28c211799f1 59 /*
Antulius 0:a28c211799f1 60 +-------------------------------------------------------------------------------
Antulius 0:a28c211799f1 61 | Variables Globales de Usuario
Antulius 0:a28c211799f1 62 +-------------------------------------------------------------------------------
Antulius 0:a28c211799f1 63 */
Antulius 0:a28c211799f1 64 uint16_t Rate=Ticker_Rate/2; // Velocidad de barrido (500us = 0.5ms)
Antulius 0:a28c211799f1 65 uint16_t counter=250; // Cuenta inicial de 250us
Antulius 0:a28c211799f1 66 uint8_t Seleccion; // Seleccion de opción para el menú
Antulius 0:a28c211799f1 67 /*
Antulius 0:a28c211799f1 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Antulius 0:a28c211799f1 69 | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
Antulius 0:a28c211799f1 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Antulius 0:a28c211799f1 71 */
Antulius 0:a28c211799f1 72 void TimerInt_OnInterrupt(void);
Antulius 0:a28c211799f1 73 void Blinking_Led(void);
Antulius 0:a28c211799f1 74 /*
Antulius 0:a28c211799f1 75 #===============================================================================
Antulius 0:a28c211799f1 76 |
Antulius 0:a28c211799f1 77 | P R O G R A M A P R I N C I P A L
Antulius 0:a28c211799f1 78 |
Antulius 0:a28c211799f1 79 #===============================================================================
Antulius 0:a28c211799f1 80 */
Antulius 0:a28c211799f1 81 int main()
Antulius 0:a28c211799f1 82 {
Antulius 0:a28c211799f1 83 // Inicialización de variables, puertos e interrupciones
Antulius 0:a28c211799f1 84 TimerInt.attach_us(&TimerInt_OnInterrupt, Rate); // Le asigna el periodo de barrido de 1ms (Rate=1000)
Antulius 0:a28c211799f1 85 terminal.baud(115200); // Se configura la velocidad de transmisión e inicia la comunicación serial.
Antulius 0:a28c211799f1 86 terminal.printf(" System is Wake Up!.\n\r");
Antulius 0:a28c211799f1 87
Antulius 0:a28c211799f1 88 while (true) // El Lazo del Programa principal está aquí !!!
Antulius 0:a28c211799f1 89 {
Antulius 0:a28c211799f1 90 printf("LED RGB \r\n\n");
Antulius 0:a28c211799f1 91 inicio:
Antulius 0:a28c211799f1 92
Antulius 0:a28c211799f1 93 printf("Elija la Opcion Deseada: \r\n");
Antulius 0:a28c211799f1 94 printf("Que Color deseas? \r\n\n");
Antulius 0:a28c211799f1 95 printf("1 Rojo \r\n");
Antulius 0:a28c211799f1 96 printf("2 Verde \r\n");
Antulius 0:a28c211799f1 97 printf("3 Ambar \r\n");
Antulius 0:a28c211799f1 98 printf("4 Azul \r\n");
Antulius 0:a28c211799f1 99 printf("5 Magenta \r\n");
Antulius 0:a28c211799f1 100 printf("6 Turqueza \r\n");
Antulius 0:a28c211799f1 101 printf("7 Blanco \r\n");
Antulius 0:a28c211799f1 102 printf("0 Apagado \r\n\n");
Antulius 0:a28c211799f1 103 Blinking_Led();
Antulius 0:a28c211799f1 104 opcion:
Antulius 0:a28c211799f1 105 Seleccion=getchar();
Antulius 0:a28c211799f1 106 printf("Opcion selecionada: ");
Antulius 0:a28c211799f1 107 printf("%c \n\r",Seleccion );
Antulius 0:a28c211799f1 108 if (Seleccion >='8')
Antulius 0:a28c211799f1 109 {
Antulius 0:a28c211799f1 110 printf("Seleccion equivocada! \r\n");
Antulius 0:a28c211799f1 111 printf("Vuelve a intentarlo... \r\n\n");
Antulius 0:a28c211799f1 112 goto opcion;
Antulius 0:a28c211799f1 113 }
Antulius 0:a28c211799f1 114 switch (Seleccion)
Antulius 0:a28c211799f1 115 {
Antulius 0:a28c211799f1 116 case '1':printf("Color seleccionado: ROJO \r\n"); Color_RGB (RED); break;
Antulius 0:a28c211799f1 117 case '2':printf("Color seleccionado: VERDE \r\n"); Color_RGB (GREEN); break;
Antulius 0:a28c211799f1 118 case '3':printf("Color seleccionado: AMBAR \r\n"); Color_RGB (AMBER); break;
Antulius 0:a28c211799f1 119 case '4':printf("Color seleccionado: AZUL \r\n"); Color_RGB (BLUE); break;
Antulius 0:a28c211799f1 120 case '5':printf("Color seleccionado: MAGENTA \r\n"); Color_RGB (MAGENTA); break;
Antulius 0:a28c211799f1 121 case '6':printf("Color seleccionado: TURQUEZA \r\n"); Color_RGB (CYAN); break;
Antulius 0:a28c211799f1 122 case '7':printf("Color seleccionado: BLANCO \r\n"); Color_RGB (WHITE); break;
Antulius 0:a28c211799f1 123 default: printf("Todos los LEDs Apagados!!! \r\n"); Color_RGB (BLACK); break;
Antulius 0:a28c211799f1 124 }
Antulius 0:a28c211799f1 125 printf("\n\r Deseas cambiar de color? \r\n");
Antulius 0:a28c211799f1 126 printf("0 = No 1 = Si \r\n\n");
Antulius 0:a28c211799f1 127 Seleccion=getchar();
Antulius 0:a28c211799f1 128 if (Seleccion >='1') goto inicio;
Antulius 0:a28c211799f1 129 printf("Desea Terminar el Programa? \r\n\n");
Antulius 0:a28c211799f1 130 printf("No = 0 Si = 1 \r\n\n");
Antulius 0:a28c211799f1 131 Seleccion=getchar();
Antulius 0:a28c211799f1 132 if (Seleccion == '0') goto inicio;
Antulius 0:a28c211799f1 133 printf("Realmente Desea Terminar el Programa? \r\n\n");
Antulius 0:a28c211799f1 134 printf("No = 0 Si = 1 \r\n");
Antulius 0:a28c211799f1 135 Seleccion=getchar();
Antulius 0:a28c211799f1 136 if (Seleccion == '0') goto inicio;
Antulius 0:a28c211799f1 137 goto fin;
Antulius 0:a28c211799f1 138 }
Antulius 0:a28c211799f1 139 fin:
Antulius 0:a28c211799f1 140 printf("Se acabo! \r\n");
Antulius 0:a28c211799f1 141 }
Antulius 0:a28c211799f1 142
Antulius 0:a28c211799f1 143 /* END main */
Antulius 0:a28c211799f1 144
Antulius 0:a28c211799f1 145 /*
Antulius 0:a28c211799f1 146 ................................................................................
Antulius 0:a28c211799f1 147 : Rutinas de los Vectores de Interrupción
Antulius 0:a28c211799f1 148 ................................................................................
Antulius 0:a28c211799f1 149 */
Antulius 0:a28c211799f1 150 void TimerInt_OnInterrupt() // Rutina de Atención al Ticker
Antulius 0:a28c211799f1 151 {
Antulius 0:a28c211799f1 152 counter--; // Aquí va la Rutina de Servicio !
Antulius 0:a28c211799f1 153 if (!counter)
Antulius 0:a28c211799f1 154 {
Antulius 0:a28c211799f1 155 led_monitor = !led_monitor; // Parapadeo del LED por Interrupción (Toggle the LED)
Antulius 0:a28c211799f1 156 counter = Rate; // Restablece el contador
Antulius 0:a28c211799f1 157
Antulius 0:a28c211799f1 158 }
Antulius 0:a28c211799f1 159 }
Antulius 0:a28c211799f1 160 /* END Events */
Antulius 0:a28c211799f1 161 /*
Antulius 0:a28c211799f1 162 ________________________________________________________________________________
Antulius 0:a28c211799f1 163 |
Antulius 0:a28c211799f1 164 | Funciones Prototipo
Antulius 0:a28c211799f1 165 |_______________________________________________________________________________
Antulius 0:a28c211799f1 166 */
Antulius 0:a28c211799f1 167 // Las Funciones Prototipo van aquí !
Antulius 0:a28c211799f1 168 void Blinking_Led() // Software Blinking routine for LED
Antulius 0:a28c211799f1 169 {
Antulius 0:a28c211799f1 170 // The on-board LED is connected, via a resistor, to +3.3V (not to GND).
Antulius 0:a28c211799f1 171 // So to turn the LED on or off we have to set it to 0 or 1 respectively
Antulius 0:a28c211799f1 172 led_testigo = 0; // turn the LED on
Antulius 0:a28c211799f1 173 wait_ms(200); // 200 millisecond
Antulius 0:a28c211799f1 174 led_testigo = 1; // turn the LED off
Antulius 0:a28c211799f1 175 wait_ms(1000); // 1000 millisecond
Antulius 0:a28c211799f1 176 terminal.printf("Counter Finish! \r");
Antulius 0:a28c211799f1 177 }
Antulius 0:a28c211799f1 178
Antulius 0:a28c211799f1 179 /* END Program */
Antulius 0:a28c211799f1 180
Antulius 0:a28c211799f1 181 /* END Mbed */