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
main.cpp
00001 /* ############################################################################# 00002 ** Archivo : main.c 00003 ** Proyecto : STM32-F103C8_Torreta 00004 ** Procesador : STM32F103C8T6 00005 ** Plataforma : Blue Pill 00006 ** Herramienta : Mbed Compiler 00007 ** Version : Driver 01.01 00008 ** Compilador : GNU C Compiler 00009 ** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0 00010 ** Descripción : 00011 ** Este proyecto hace... 00012 ** This module contains user's application code. 00013 ** Componentes : GPIO, Timer, etc . 00014 ** Configuraciones : Includes, Stacks y Drivers externos 00015 ** Autores : 00016 ** ATEAM Development Group: 00017 ** - Antulio Morgado Valle 00018 ** 00019 ** Versión : Beta 00020 ** Revisión : A 00021 ** Release : 0 00022 ** Bugs & Fixes : 00023 ** Date : 20/10/2019 00024 ** Added support for Led_RGB 00025 ** 22/09/2018 00026 ** Added LCD Menu, Beta version (with bugs) 00027 ** 00028 ** ###########################################################################*/ 00029 /* 00030 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 00031 : Includes 00032 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 00033 */#include "stm32f103c8t6.h" 00034 #include "mbed.h" 00035 #include "Serial.h" 00036 #include "stdio.h" 00037 #define DO 523.25, //definimos las frecuencias de las notas 00038 #define DoS 554.37 00039 #define RE 587.33 00040 #define RES 622.25 00041 #define MI 659.26 00042 #define FA 698.46 00043 #define FAS 739.99 00044 #define SOL 783.99 00045 #define SOLS 830.61 00046 #define LA 880 00047 #define LAS 932.33 00048 #define SI 987.77 00049 #define RE2 1174.66 00050 #define FAS2 1479.98 00051 #define PAU 30000 00052 /* 00053 :............................................................................... 00054 : Definiciones 00055 :............................................................................... 00056 */#define on 0 // Estado para boton presionado 00057 #define off 1 // Estado para boton sin presionar 00058 #define hold 2 // Estado para boton mantenido 00059 #define release 3 // Estado para boton liberado 00060 #define FALSE 0 // Estado FALSO 00061 #define TRUE 1 // Estado VERDADERO 00062 #define Ticker_Rate 1000 00063 // Periodo de interrupción (us) 00064 /* 00065 +------------------------------------------------------------------------------- 00066 | Configuración de Puertos 00067 +------------------------------------------------------------------------------- 00068 */ 00069 DigitalOut verde (LED1); // NC (Green_Led) 00070 BusOut Torreta(PB_4,PB_3,PA_15,PA_12,PA_11,PA_10,PA_9,PA_8); // 00071 DigitalOut Led_Monitor (PB_1); // Led monitor de la Tarjeta STM32F103C8 00072 Ticker Barrido; 00073 PwmOut Buzzer(PB_11); 00074 Serial terminal (PA_2, PA_3); // PB1_TIM3_CH4N 00075 /* 00076 +------------------------------------------------------------------------------- 00077 | Variables Globales de Usuario 00078 +------------------------------------------------------------------------------- 00079 */ 00080 uint8_t Secuencias[]={ 00081 //0x03, 0x03, 0xC0, 0xC0, 0x03, 0x03, 0xC0, 0xC0, // 8 00082 0x32, 0x12, 0x15, 0xF1, 0x58, 0x33, 0x32, 0x12, 00083 0x15, 0xE6, 0x21, 0x81, 0x72, 0xF1, 0xC3, 0xAA, 00084 0x15, 0xE6, 0x21, 0x81, 0x72, 0xF1, 0xC3, 0xAA, 00085 0x32, 0x12, 0x15, 0xF1, 0x58, 0x33, 0x32, 0x12, 00086 0x12, 0x32, 0x33, 0x58, 0xF1, 0x15, 0x12, 0x32, 00087 0xAA, 0xC3, 0xF1, 0x72, 0x81, 0x21, 0xE6, 0x15, 00088 }; 00089 uint16_t No_Secuencias=48; // Número de secuencias a desplegar 00090 uint16_t i=0; // Indice para las secuencias 00091 uint16_t delayA=250; // Tiempo de retardo entre secuencias (en ms) 00092 uint16_t contadorA=0; // Contador de mili segundos 00093 int cont=0; 00094 00095 /* END Global Variables */ 00096 /* 00097 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00098 | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción 00099 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00100 */ 00101 void caratula (); 00102 void Menu (); 00103 void N (void); 00104 void Barrido_OnInterrupt(void); 00105 00106 //______________________________________________________________________________ 00107 int tones[] = {SI, RE2, SI, RE2, PAU, SI, LA, SI, SI, SI, PAU, RE2, SI, SI, PAU, 00108 RE2, PAU, RE2, RE2, PAU, SI, RE2, SI, RE2, PAU, SI, LA, SI, SI, 00109 SI, PAU, RE2, SI, SI, PAU, RE2, PAU, RE2, RE2, PAU, RE2, PAU, SI, 00110 RE2, PAU, SI, RE2, PAU, SI, RE2, PAU, SI, PAU, RE2, SI, LA, SI, 00111 PAU, RE2, PAU, SI, RE2, PAU, SI, RE2, PAU, SI, RE2, PAU, SI, PAU, 00112 RE2, SI, LA, SI, PAU, FAS2, PAU, RE2, FAS2, PAU, RE2, FAS2, PAU, 00113 RE2 ,FAS2, PAU, RE2, FAS2, PAU, RE2, LA, SOLS, SI, PAU, FAS2, PAU, 00114 RE2, FAS2, PAU, RE2, FAS2, PAU, RE2, FAS2, PAU, RE2, FAS2, PAU, //64+13 00115 RE2, LA, SI, SI,};//113 tonos 00116 int tones_num = 113; 00117 int d=1000, e=500, m=250, c=125; //definimos los tiempos de doble, entera, media y cuarta 00118 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, 00119 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, 00120 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, 00121 }; 00122 00123 00124 void Play_tunes(PwmOut name, int notes, int tones); 00125 00126 00127 /* 00128 #=============================================================================== 00129 | 00130 | P R O G R A M A P R I N C I P A L 00131 | 00132 #=============================================================================== 00133 */ 00134 int main() 00135 { // Inicialización de variables locales, puertos e interrupciones van aquí !!! 00136 confSysClock(); // Inicialización del Sistema, 00137 Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Rate); // Periodo de la Interrupción por Timer = 1ms (Tcker_Rate=1000) 00138 00139 //while (true) // El Lazo del Programa principal está aquí !!! 00140 N (); 00141 caratula (); 00142 Menu (); 00143 } 00144 /* END main */ 00145 00146 /* 00147 ................................................................................ 00148 : Rutinas de los Vectores de Interrupción 00149 ................................................................................ 00150 */ 00151 // Esta es la función Play_tunes que mandamos a llamar dandole algunos 00152 // valores anteriormente 00153 void N() 00154 { 00155 terminal.baud(115200); 00156 } 00157 void caratula () 00158 { 00159 terminal.printf("Instituto Politecnico Nacional\n"); 00160 terminal.printf("Escuela Superior de Ingenieria Mecanica y Electrica\n"); 00161 terminal.printf("Analisis Numerico\n"); 00162 terminal.printf("Moya Garcia Iris\n"); 00163 } 00164 void Menu () 00165 { 00166 int opcion=0; 00167 do 00168 { 00169 terminal.printf("\tBievenido\n"); 00170 terminal.printf ("Este programa tiene secuencias de: leds y de notas\n"); 00171 terminal.printf("Elija la opcion deseada\n"); 00172 terminal.printf("Seleccione 1: Si solo quiere secuencia de leds\n"); 00173 terminal.printf("Seleccione 2: Si solo quiere secuencia de tonos\n"); 00174 terminal.printf("Seleccione 3: Si solo quiere secuencia de leds\n"); 00175 terminal.printf("Seleccione 4: Si quiere salir\n"); 00176 scanf("%d", &opcion); 00177 if (opcion== 0) 00178 { 00179 Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Rate); 00180 } 00181 if (opcion== 2) 00182 { 00183 for(int x=0; x<40; x++) 00184 { 00185 int i; 00186 for (i=0; i<100; i=+5) { 00187 Buzzer.period(1.0/969.0); 00188 Buzzer = float(i)/50.0; 00189 wait(.5); 00190 Buzzer.period(1.0/800.0); 00191 wait(.5); 00192 } 00193 for (i=25; i>=0; i=i-2) { 00194 Buzzer.period(1.0/969.0); 00195 Buzzer = float(i)/50.0; 00196 wait(.5); 00197 Buzzer.period(1.0/800.0); 00198 wait(.5); 00199 } 00200 Buzzer = 0.0; 00201 } 00202 } 00203 if (opcion== 3) 00204 { 00205 { 00206 Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Rate); 00207 for(int x=0; x<40; x++) 00208 { 00209 int i; 00210 for (i=0; i<26; i=i+2) { 00211 Buzzer.period(1.0/969.0); 00212 Buzzer = float(i)/50.0; 00213 wait(.5); 00214 Buzzer.period(1.0/800.0); 00215 wait(.5); 00216 } 00217 for (i=25; i>=0; i=i-2) { 00218 Buzzer.period(1.0/969.0); 00219 Buzzer = float(i)/50.0; 00220 wait(.5); 00221 Buzzer.period(1.0/800.0); 00222 wait(.5); 00223 } 00224 Buzzer = 0.0; 00225 } 00226 } 00227 } 00228 if ((opcion!=0) || (opcion!= 1)||(opcion!= 2)||(opcion!= 3)) 00229 terminal.printf("Opcion invalida"); 00230 } 00231 while (opcion== 3); 00232 } 00233 void Barrido_OnInterrupt() 00234 { 00235 /* Rutina de Atención a la Interrupción */ 00236 00237 contadorA++; // Incremeta el contador de mili segundos 00238 if (contadorA == delayA) // Contador es igual al retardo programado? 00239 { 00240 Torreta=tones[cont]; // Escribe la secuencia 00241 cont++; // Incrementa el índice 00242 if (cont >= No_Secuencias) cont=0; // Es la última secuencia? 00243 contadorA =0; // Reinicia contador de retardo 00244 Led_Monitor = !Led_Monitor; // Parpadeo del Led Monitor 00245 } 00246 } 00247 /* 00248 ________________________________________________________________________________ 00249 | 00250 | Funciones Prototipo 00251 |_______________________________________________________________________________ 00252 */ 00253 // Las Funciones Prototipo van aquí ! 00254 //void confSysClock(void); // Configure system clock (72MHz HSE clock, 48MHz USB clock) 00255 00256 /* END functions */ 00257 00258 /* END program */ 00259 00260 /*+----------------------------------------------------------------------------- 00261 *+ La documentación va aquí!: 00262 +-------------------------------------------------------------------------------- 00263 | EJERCICIO 00264 | 00265 | 1.- Modificar este programa para: 00266 | a) Agregar más secuencias (mínimo 32). 00267 | b) Realizar el barrido del arreglo de atrás hacia adelante y repetir 00268 | 2.- Modificar el programa para incluir secuencias de sonidos utiliando el 00269 | módulo PWM (Sirena). 00270 | 00271 +-------------------------------------------------------------------------------- 00272 | 00273 | EXAMEN 00274 | 00275 | 1.- Modificar el programa para que despliegue un rango de secuencias 00276 | determinado. 00277 | 2.- Modificar el programa para incluir un menú de selección de secuencias. 00278 | a) Para la Torreta 00279 | b) Para la Sirena 00280 | c) Combinados 00281 | 3.- Volver a realizar éste programa utilizando tambien con apuntadores. 00282 | 00283 | Mucha Suerte! 00284 | 00285 *+----------------------------------------------------------------------------* 00286 *+ 00287 *+ Powered by 00288 *+ 00289 *+ T H E A N T U L I U ' S T E A M R&D Unltd 00290 *+ 00291 *+ Research, Development, Systems, Equipment, Support & Spare Parts. 00292 *+ (C) Copyright 1989-2019, All Rights Reserved 00293 *+ 00294 *+ Welcome to The Beaners Proyect Community! 00295 *+----------------------------------------------------------------------------*/ 00296 00297 /* END Mbed */
Generated on Thu Aug 4 2022 03:02:34 by
