Mbed for ESIMEos / Mbed 2 deprecated torretmod

Dependencies:   mbed

Revision:
0:f428b670026a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Oct 26 03:57:39 2019 +0000
@@ -0,0 +1,297 @@
+/* #############################################################################
+**    Archivo        : main.c
+**    Proyecto       : STM32-F103C8_Torreta
+**    Procesador     : STM32F103C8T6
+**    Plataforma     : Blue Pill
+**    Herramienta    : Mbed Compiler
+**    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 "stm32f103c8t6.h"
+#include "mbed.h"
+#include "Serial.h"
+#include "stdio.h"
+#define DO 523.25, //definimos las frecuencias de las notas
+#define        DoS 554.37
+#define        RE 587.33
+#define        RES 622.25
+#define        MI 659.26
+#define        FA 698.46
+#define        FAS 739.99
+#define        SOL 783.99
+#define        SOLS 830.61
+#define        LA 880
+#define        LAS 932.33
+#define        SI 987.77
+#define        RE2 1174.66
+#define        FAS2 1479.98
+#define        PAU 30000
+/*
+:...............................................................................
+:  Definiciones
+:...............................................................................
+*/#define on              0               // Estado para boton presionado
+#define off             1               // Estado para boton sin presionar
+#define hold            2               // Estado para boton mantenido
+#define release         3               // Estado para boton liberado
+#define FALSE           0               // Estado FALSO
+#define TRUE            1               // Estado VERDADERO
+#define Ticker_Rate     1000            
+            // Periodo de interrupción (us)
+/*
++-------------------------------------------------------------------------------
+|  Configuración de Puertos 
++-------------------------------------------------------------------------------
+*/
+DigitalOut   verde  (LED1);    // NC       (Green_Led)
+BusOut       Torreta(PB_4,PB_3,PA_15,PA_12,PA_11,PA_10,PA_9,PA_8); // 
+DigitalOut   Led_Monitor (PB_1);         // Led monitor de la Tarjeta STM32F103C8
+Ticker       Barrido;    
+PwmOut       Buzzer(PB_11);
+Serial       terminal (PA_2, PA_3);               // PB1_TIM3_CH4N
+/*
++-------------------------------------------------------------------------------
+|  Variables Globales de Usuario 
++-------------------------------------------------------------------------------
+*/
+uint8_t Secuencias[]={
+        //0x03, 0x03, 0xC0, 0xC0, 0x03, 0x03, 0xC0, 0xC0, //   8
+        0x32, 0x12, 0x15, 0xF1, 0x58, 0x33, 0x32, 0x12,
+        0x15, 0xE6, 0x21, 0x81, 0x72, 0xF1, 0xC3, 0xAA,
+        0x15, 0xE6, 0x21, 0x81, 0x72, 0xF1, 0xC3, 0xAA,
+        0x32, 0x12, 0x15, 0xF1, 0x58, 0x33, 0x32, 0x12,
+        0x12, 0x32, 0x33, 0x58, 0xF1, 0x15, 0x12, 0x32,
+        0xAA, 0xC3, 0xF1, 0x72, 0x81, 0x21, 0xE6, 0x15,
+};
+uint16_t No_Secuencias=48;     // Número de secuencias a desplegar
+uint16_t i=0;                   // Indice para las secuencias
+uint16_t delayA=250;             // Tiempo de retardo entre secuencias (en ms)
+uint16_t contadorA=0;            // Contador de mili segundos
+int cont=0;
+
+/* END Global Variables */           
+/*
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+|  Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+*/
+void caratula ();
+void Menu ();
+void N (void);
+void Barrido_OnInterrupt(void); 
+
+//______________________________________________________________________________  
+int tones[] = {SI, RE2,  SI,  RE2,   PAU,  SI,   LA,   SI,   SI,    SI,   PAU,  RE2,  SI,    SI, PAU,
+               RE2, PAU, RE2,  RE2,  PAU,  SI,   RE2,  SI,   RE2,   PAU,  SI,   LA,   SI,    SI, 
+               SI, PAU,  RE2,  SI,   SI,   PAU,  RE2,  PAU,  RE2,   RE2,  PAU,  RE2,  PAU,   SI,
+               RE2, PAU, SI,   RE2,  PAU,  SI,   RE2,  PAU,  SI,   PAU,   RE2,  SI,   LA,    SI, 
+               PAU, RE2, PAU,   SI,  RE2,  PAU,  SI,   RE2,  PAU,  SI,    RE2,  PAU,  SI,   PAU, 
+               RE2, SI,   LA,   SI,  PAU,  FAS2, PAU,  RE2,  FAS2, PAU,   RE2,  FAS2, PAU, 
+               RE2 ,FAS2, PAU, RE2,  FAS2, PAU,  RE2,  LA,   SOLS, SI,   PAU,   FAS2, PAU,
+               RE2, FAS2, PAU, RE2,  FAS2, PAU,  RE2,  FAS2, PAU,  RE2,  FAS2,  PAU, //64+13
+               RE2, LA,    SI, SI,};//113 tonos
+int tones_num = 113;
+int d=1000, e=500, m=250, c=125; //definimos los tiempos de doble, entera, media y cuarta
+int duracionNota[] = {m, m, m, m, e, c, m, m, c, m, e, m, m, m, e, m, m, m, m, d, m, m, m, m, e, c, m, m, c, m, e, m, m, m, e, m, m, m, m, d,
+m, m, m, m, m, m, m, m, m, m, m, m, c, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m,
+m, m, m, m, m, m, m, m, m, m, m, m, c, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m,
+};
+
+
+void Play_tunes(PwmOut name, int notes, int tones);
+
+
+/*
+#===============================================================================
+|
+|               P R O G R A M A     P R I N C I P A L
+|
+#=============================================================================== 
+*/
+int main()          
+{       // Inicialización de variables locales, puertos e interrupciones van aquí !!!
+confSysClock();     // Inicialización del Sistema, 
+Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Rate);   // Periodo de la Interrupción por Timer = 1ms (Tcker_Rate=1000)
+
+    //while (true)                // El Lazo del Programa principal está aquí !!!
+    N ();
+    caratula ();
+    Menu ();
+}
+/* END main */
+
+/*
+................................................................................
+:  Rutinas de los Vectores de Interrupción
+................................................................................
+*/
+// Esta es la función Play_tunes que mandamos a llamar dandole algunos
+// valores anteriormente
+void N()
+    {
+        terminal.baud(115200); 
+    }
+void caratula ()
+    { 
+        terminal.printf("Instituto Politecnico Nacional\n");
+        terminal.printf("Escuela Superior de Ingenieria Mecanica y Electrica\n");
+        terminal.printf("Analisis Numerico\n");
+        terminal.printf("Moya Garcia Iris\n");
+    }
+void Menu ()
+    {
+        int opcion=0;
+        do 
+        {
+            terminal.printf("\tBievenido\n");
+            terminal.printf ("Este programa tiene secuencias de: leds y de notas\n");
+            terminal.printf("Elija la opcion deseada\n");
+            terminal.printf("Seleccione 1: Si solo quiere secuencia de leds\n");
+            terminal.printf("Seleccione 2: Si solo quiere secuencia de tonos\n");
+            terminal.printf("Seleccione 3: Si solo quiere secuencia de leds\n");
+            terminal.printf("Seleccione 4: Si quiere salir\n");
+            scanf("%d", &opcion);
+            if (opcion== 0)
+            {
+                Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Rate);
+            }
+            if (opcion== 2)
+            {
+            for(int x=0; x<40; x++)
+              {
+              int i;
+              for (i=0; i<100; i=+5) { 
+              Buzzer.period(1.0/969.0);
+              Buzzer = float(i)/50.0;
+              wait(.5);
+              Buzzer.period(1.0/800.0);
+              wait(.5);
+              }
+              for (i=25; i>=0; i=i-2) {
+              Buzzer.period(1.0/969.0);
+              Buzzer = float(i)/50.0;
+              wait(.5);
+              Buzzer.period(1.0/800.0);
+              wait(.5);
+              }
+              Buzzer = 0.0;
+              }
+            }
+        if (opcion== 3)
+        {
+             {
+              Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Rate);
+              for(int x=0; x<40; x++)
+              {
+              int i;
+              for (i=0; i<26; i=i+2) {
+              Buzzer.period(1.0/969.0);
+              Buzzer = float(i)/50.0;
+              wait(.5);
+              Buzzer.period(1.0/800.0);
+              wait(.5);
+              }
+              for (i=25; i>=0; i=i-2) {
+              Buzzer.period(1.0/969.0);
+              Buzzer = float(i)/50.0;
+              wait(.5);
+              Buzzer.period(1.0/800.0);
+              wait(.5);
+              }
+              Buzzer = 0.0;
+              }
+              }
+        }
+        if ((opcion!=0) || (opcion!= 1)||(opcion!= 2)||(opcion!= 3))
+       terminal.printf("Opcion invalida");
+        }
+       while (opcion== 3); 
+    }
+    void Barrido_OnInterrupt()
+{
+    /* Rutina de Atención a la Interrupción */
+    
+    contadorA++;                     // Incremeta el contador de mili segundos
+    if (contadorA == delayA)          // Contador es igual al retardo programado?
+    {
+    Torreta=tones[cont];          // Escribe la secuencia
+    cont++;                            // Incrementa el índice
+    if (cont >= No_Secuencias) cont=0;    // Es la última secuencia?
+    contadorA =0;                    // Reinicia contador de retardo
+    Led_Monitor = !Led_Monitor;     // Parpadeo del Led Monitor
+    }
+}
+/*
+________________________________________________________________________________
+|
+|  Funciones Prototipo
+|_______________________________________________________________________________
+*/
+                    // Las Funciones Prototipo van aquí !
+//void confSysClock(void);    // Configure system clock (72MHz HSE clock, 48MHz USB clock)
+
+/* END functions */    
+                
+/* END program */
+
+/*+-----------------------------------------------------------------------------       
+*+ La documentación va aquí!:
++--------------------------------------------------------------------------------
+|                               EJERCICIO
+|
+| 1.-   Modificar este programa para: 
+|       a) Agregar más secuencias (mínimo 32).
+|       b) Realizar el barrido del arreglo de atrás hacia adelante y repetir
+| 2.-   Modificar el programa para incluir secuencias de sonidos utiliando el 
+|       módulo PWM (Sirena).
+|       
++--------------------------------------------------------------------------------
+|
+|                               EXAMEN
+|
+| 1.-   Modificar el programa para que despliegue un rango de secuencias  
+|       determinado.
+| 2.-   Modificar el programa para incluir un menú de selección de secuencias.
+|       a) Para la Torreta
+|       b) Para la Sirena
+|       c) Combinados
+| 3.-   Volver a realizar éste programa utilizando tambien con apuntadores.
+|
+|       Mucha Suerte!                       
+|
+*+----------------------------------------------------------------------------*
+*+
+*+   Powered by
+*+
+*+          T H E     A N T U L I U ' S   T E A M   R&D  Unltd 
+*+
+*+  Research, Development, Systems, Equipment, Support & Spare Parts.
+*+  (C) Copyright 1989-2019, All Rights Reserved            
+*+
+*+  Welcome to The Beaners Proyect Community!                   
+*+----------------------------------------------------------------------------*/
+
+/* END Mbed */   
\ No newline at end of file