Led_RGB para la Tarjeta FRDM-KL46Z

Dependencies:   mbed

Revision:
0:a28c211799f1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Jun 26 00:42:00 2019 +0000
@@ -0,0 +1,181 @@
+/* ###########################################################################
+**    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 */ 
\ No newline at end of file