Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: main.cpp
- 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