Led_RGB para la Tarjeta FRDM-KL46Z
Dependencies: mbed
main.cpp@0:a28c211799f1, 2019-06-26 (annotated)
- 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?
User | Revision | Line number | New 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 */ |