Programa de Minimos.

Dependencies:   mbed

main.cpp

Committer:
JavierMarcelo98
Date:
2019-10-23
Revision:
4:e8498d695fc2
Parent:
3:7d496863c448
Child:
5:7bd28f4ca12b

File content as of revision 4:e8498d695fc2:

/* ###########################################################################
**    Archivo        : main.c
**    Proyecto       : STM32-103C8_Portada
**    Procesador     : STM32F103C8
**    Herramienta    : Mbed
**    Version        : Driver 01.01
**    Compilador     : GNU C Compiler
**    Fecha/Hora     : 14-07-2015, 11:48, # CodeGen: 0
**    Descripción    :
**         Este proyecto muestra la configuración y uso de la Terminal Serial
**         This module contains user's application code.
**   Componentes     : Timer, etc .
**   Configuraciones : Se puede seleccionar entre diferentes velocodades de 
**                     transmisión
**   Autores         :
**         ATEAM Development Group:
**          - Antulio Morgado Valle
**          - Marcelo Padron Javier
**
**   Versión        : Beta
**   Revisión       : A
**   Release        : 0
**   Bugs & Fixes   :
**   Date           : 22/10/2019
**                   
**                     
**                    
**
** ###########################################################################*/
/*
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:  Includes
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*/

#include "stm32f103c8t6.h"
#include "mbed.h"
#include "Serial.h"
#include "stdio.h"
/*
:...............................................................................
:  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            // Tiempo del Ticker
////////////////////////////////////////// Definimos las notas notas musicales y su frecuencia.
/*
+-------------------------------------------------------------------------------
|  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);          // Inicializa la comunicación serial a la PC (Tx,Rx)
//Serial     terminal(USBTX, USBRX,115200);// Tx, Rx  Baud Rate - Terminal Serial por USB @ 115,200 Bauds

/*
+-------------------------------------------------------------------------------
|  Variables Globales de Usuario
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
uint8_t SecuenciaA[]={          //Secuencia de luces A
        0xC3,0x3C,0xC3,0x3C,0xC3,0x3C,0xC3,0x3C,
        0xC3,0xFF,0xC3,0xFF,0xC3,0xFF,0xC3,0xFF,
        0xC3,0xFF,0xC3,0xFF,0xC3,0xFF,0xC3,0xFF, 
        };
uint16_t No_SecuenciasA=24;      
uint16_t A=0;                    
uint16_t delayA=100;             
uint16_t contadorA=0;           // Velocidad de Transmisión (Bauds)

/*
|  Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
void Portada();
void Seleccion();
void Setup(void);  
void Barrido_OnInterrupt(void);  
/* END definitions */ 

/*
#===============================================================================
|
|               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     // Configure system clock (72MHz HSE clock, 48MHz USB clock)
Setup();            // Inicialización del sistema

Portada();          //Mandar a llamar a la funcion Portada.
Seleccion();        //Mandar a llamar a la Seleccion.
}
/* END main */

/*
................................................................................
:  Rutinas de los Vectores de Interrupción
................................................................................
*/
 
/* END Events */ 
/*
________________________________________________________________________________
|
|  Funciones Prototipo
|_______________________________________________________________________________
*/
                // Las Funciones Prototipo van aquí !
void Setup()
{
//  terminal.baud(Baud_Rate);         // Se configura la velocidad de transmisión e inicia la comunicación serial.    
  terminal.baud(115200);              // Se configura la velocidad de transmisión e inicia la comunicación serial.  
}    
void Portada()//Funcion Portada
{
    terminal.printf("ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA"); 
    terminal.printf("\n\rIngenieria en comunicaciones y electronica"); 
    terminal.printf("\n\rAnalisis Numerico"); 
    terminal.printf("\n\rPrograma N. 5 ");
    terminal.printf("\n\rMarcelo Padron Javier"); 
    terminal.printf("\n\rGRUPO:4CV2");
    wait(3.0);//Retardo de 3 segundos
    
}
void Seleccion()//Funcion Seleccion
{   
Primero:    
    terminal.printf("\n\n\rEste programa despliega una secuencia de luces,\n\runa secuencia de sonido o ambas al mismo tiempo.");
    terminal.printf("\n\rOprima 1 si: Desea que se despliegue la secuencia de luces.");
    terminal.printf("\n\rOprima 2 si: Desea que se despliegue una secuencia de sonido.");
    terminal.printf("\n\rOprima 3 si: Desea que se desplieguen ambas secuencias.\n\r");
    char valor = terminal.getc(); //Seleccion de opcion(No funciona!!)
    wait(1.0);
    valor = '3';//Valor predefinido que lanza la secuencia de Luces y del Buzzer
    switch(valor) { //Menu de opciones
    case '1': terminal.printf("\n\rUsted a seleccionado la opcion 1\n\r"); 
              wait(1.0);
              terminal.printf("\n\rDesplegando secuencia en....");
              wait(1.0);
              terminal.printf("\n\r3....");
              wait(1.0);
              terminal.printf("\n\r2....");
              wait(1.0);
              terminal.printf("\n\r1....");
              wait(1.0);
              Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Rate);
              break;
    case '2': terminal.printf("\n\rUsted a seleccionado la opcion 2\n\r"); 
              wait(1.0);
              terminal.printf("\n\rDesplegando secuencia en....");
              wait(1.0);
              terminal.printf("\n\r3....");
              wait(1.0);
              terminal.printf("\n\r2....");
              wait(1.0);
              terminal.printf("\n\r1....");
              wait(1.0);
              for(int x=0; x<40; x++)//Este for solamente repite la secuencia, puedes modificar x.
              {
              int i;
              for (i=0; i<26; i=i+2) { //For que se encarga de aumentar y disminuir frecuencias del Buzzer.
              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;
              }
              break;
    case '3': terminal.printf("\n\rUsted a seleccionado la opcion 3\n\r"); 
              wait(1.0);
              terminal.printf("\n\rDesplegando secuencia en....");
              wait(1.0);
              terminal.printf("\n\r3....");
              wait(1.0);
              terminal.printf("\n\r2....");
              wait(1.0);
              terminal.printf("\n\r1....");
              wait(1.0);
              {
              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;
              }
              }
              break; 
     default: terminal.printf("\n\r\n\rUsted ha ingresado una opcion que no es valida!!)");
              terminal.printf("\n\rEn unos instantes lo regresaremos al menu!!\n\r");
              wait(4.0);
              goto Primero; // Regresa al usuario a la seleccion de opcion n veces hasta que seleccione una opcion valida 
}
}  
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=SecuenciaA[A];          // Escribe la secuencia
    A++;                            // Incrementa el índice
    if (A >= No_SecuenciasA) A=0;    // Es la última secuencia?
    contadorA =0;                    // Reinicia contador de retardo
    Led_Monitor = !Led_Monitor;     // Parpadeo del Led Monitor
    }
}
/* END routines */   
 
/* END program */                

/* END documentation */ 
/*

+--------------------------------------------------------------------------------
|
|                     T H E     A N T U L I U S   T E A M
|  Research, Development, Systems Equipment, Support & Spare Parts    I n c.
|                (C) Copyright 1989-2014, All rigths Reserved
|
| This program is licensed under rules of
| THE BEANERS TECHNOLOGIES PROYECT
+-------------------------------------------------------------------------------
*/
/* END Mbed */