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-103C8_Adivina 00004 ** Procesador : STM32F103C8 00005 ** Plataforma : Blue Pill 00006 ** Herramienta : Mbed 00007 ** Compilador : Mbed Online C Compiler 00008 ** Version : Mbed-OS 5.15.0 00009 ** Fecha/Hora : 18-12-2019, 11:48, # CodeG 00010 ** Descripción : 00011 ** Este proyecto muestra la configuración y uso de la Terminal Serial 00012 ** para intercurar con el usuar a traves del juego de "Adivina el Número" 00013 ** This module contains user's application code. 00014 ** Componentes : Timer, etc . 00015 ** Configuraciones : Se puede seleccionar entre diferentes velocodades de 00016 ** transmisión 00017 ** Autores : 00018 ** ATEAM Development Group: 00019 ** - Antulio Morgado Valle 00020 ** 00021 ** Versión : Beta 00022 ** Revisión : A 00023 ** Release : 0 00024 ** Bugs & Fixes : 00025 ** Date : 20/10/2019 00026 ** Ejemplpo del Hola Mundo 00027 ** 27/09/2010 00028 ** 00029 ** 00030 ** ###########################################################################*/ 00031 /* 00032 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 00033 : Includes 00034 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 00035 */ 00036 00037 #include "stm32f103c8t6.h" 00038 #include "mbed.h" 00039 #include "Serial.h" 00040 #include "stdio.h" 00041 /* 00042 :............................................................................... 00043 : Definiciones 00044 :............................................................................... 00045 */ 00046 #define LED_Type 0 // Tipo de LED RGB: 0=Cátodo Común, 1=Ánodo Común 00047 #define on 0 // Estado para boton presionado 00048 #define off 1 // Estado para boton sin presionar 00049 #define hold 2 // Estado para boton mantenido 00050 #define release 3 // Estado para boton liberado 00051 #define FALSE 0 // Estado FALSO 00052 #define TRUE 1 // Estado VERDADERO 00053 #define Buzz_Off 0 // Estado del Buzzer Apagado 00054 #define Buzz_On 1 // Estado del Buzzer Encendido 00055 #define Baud_Rate 115200 // Velocidad de Transmisión (Bauds) 00056 // Velocidades Permitidas: 00057 // 300, 600, 1200, 2400, 4800, 9600, 00058 // 14400, 19600, 28800, 38400, 57600 00059 // 115200, 230400 00060 #if Display_Type == 0 // Si el Led RGB es Cátodo Común 00061 #define led_on 1 // Estado para el Led encendido 00062 #define led_off 0 // Estado para el Led encendido 00063 #endif 00064 00065 #if Display_Type == 1 // Si el Led RGB es Ánodo Común 00066 #define led_on 0 // Estado para el Led encendido 00067 #define led_off 1 // Estado para el Led encendido 00068 #endif 00069 /* 00070 +------------------------------------------------------------------------------- 00071 | Configuración de Puertos 00072 +------------------------------------------------------------------------------- 00073 */ 00074 DigitalOut led_monitor(LED1); // Inicializa el LED Monitor (Interno) 00075 DigitalOut led_azul(PB_0); // Inicializa el PWM1 (PB0_TIM3_CH3) Led AZUL 00076 DigitalOut led_verde(PA_7); // Inicializa el PWM2 (PA7_TIM3_CH2) Led VERDE 00077 DigitalOut led_rojo(PA_6); // Inicializa el PWM3 (PA6_TIM3_CH1) Led ROJO 00078 PwmOut buzzer(PB_1); // PB1_TIM3_CH4N 00079 // ***** Host PC Terminal Communication channels 00080 Serial terminal (PA_2, PA_3); // Inicializa la comunicación serial a la PC (Tx,Rx) 00081 //Serial terminal(USBTX, USBRX,115200);// Tx, Rx Baud Rate - Terminal Serial por USB @ 115,200 Bauds 00082 00083 /* 00084 +------------------------------------------------------------------------------- 00085 | Variables Globales de Usuario 00086 +------------------------------------------------------------------------------- 00087 */ 00088 uint8_t Seleccion; // Seleccion de opción para el menú 00089 /* 00090 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00091 | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción 00092 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00093 */ 00094 void setup(void); 00095 void buzzer_test(void); 00096 void clear_screen(void); 00097 /* END definitions */ 00098 00099 /* 00100 #=============================================================================== 00101 | 00102 | P R O G R A M A P R I N C I P A L 00103 | 00104 #=============================================================================== 00105 */ 00106 int main() 00107 { // Inicialización de variables, puertos e interrupciones 00108 confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock) 00109 setup(); // Inicialización del sistema 00110 terminal.printf ("ADIVINA\n\r"); 00111 led_rojo = led_off; 00112 led_verde = led_off; 00113 led_azul = led_off; 00114 terminal.printf(" System is Wake Up!.\n\r"); // e inicia la comunicación serial 00115 terminal.printf ("\t\e[1;37;41mInstituto Politecnico Nacional\e[0m\n\r"); 00116 terminal.printf ("\e[1;37;42mESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA\e[0m\n\r\v"); 00117 terminal.printf ("\t\e[1;34;40mAdivina \e[1;37;40mel \e[1;32;40mNumero \e[1;33;40mSecreto \e[0m\n\r\v\v\e[0m"); 00118 terminal.printf("Pulse Cualquier Tecla para continuar..."); // Pausa 00119 Seleccion=getchar(); 00120 while(TRUE) 00121 { 00122 Inicio: clear_screen(); // Limpia la Pantalla de la Terminal 00123 terminal.printf(" DIGITE UN NUMERO SECRETO DE 0 A 9 \r\n"); 00124 char secreto = terminal.getc(); 00125 led_rojo = led_on ; 00126 led_verde = led_on ; 00127 led_azul = led_on ; 00128 clear_screen(); // Limpia la Pantalla de la Terminal 00129 Intenta: terminal.printf(" ADIVINA EL NUMERO: \r\n"); 00130 char respuesta = terminal.getc(); 00131 if( secreto < respuesta ) 00132 { 00133 terminal.printf(" Es mas Bajo \r\n"); 00134 led_rojo = led_on ; 00135 led_verde = led_off; 00136 led_azul = led_off; 00137 goto Intenta; 00138 } 00139 if( secreto > respuesta ) 00140 { 00141 terminal.printf(" Es mas Alto \r\n"); 00142 led_rojo = led_off; 00143 led_verde = led_off; 00144 led_azul = led_on ; 00145 goto Intenta; 00146 } 00147 if( secreto == respuesta ) 00148 { 00149 terminal.printf(" CORRECTO!, Es igual a: %c \r\n",secreto); 00150 led_rojo = led_off; 00151 led_verde = led_on ; 00152 led_azul = led_off; 00153 wait(1.0); 00154 led_rojo = led_off; 00155 led_verde = led_off; 00156 led_azul = led_off; 00157 wait(1.0); 00158 led_rojo = led_off; 00159 led_verde = led_on ; 00160 led_azul = led_off; 00161 wait(1.0); 00162 terminal.printf(" Eres un Genio !!! \r\n"); 00163 wait(1.0); 00164 led_rojo = led_on ; 00165 led_verde = led_off; 00166 led_azul = led_on ; 00167 wait(1.0); 00168 led_rojo = led_on ; 00169 led_verde = led_on ; 00170 led_azul = led_off; 00171 wait(1.0); 00172 led_rojo = led_off; 00173 led_verde = led_on ; 00174 led_azul = led_on ; 00175 wait(1.0); 00176 led_rojo = led_on ; 00177 led_verde = led_on ; 00178 led_azul = led_on ; 00179 } 00180 terminal.printf(" Quieres intentarlo de nuevo? \r\n"); 00181 terminal.printf(" 0 = No \r\n 1 = Si \r\n"); 00182 char opcion = terminal.getc(); 00183 if( opcion == '1' ) goto Inicio; 00184 else if( opcion == '0' ) 00185 { 00186 led_rojo = led_off; 00187 led_verde = led_off; 00188 led_azul = led_off; 00189 terminal.printf(" Eso es todo Amigos! \r\n"); 00190 break; 00191 } 00192 } 00193 } 00194 00195 /* END main */ 00196 00197 /* 00198 ................................................................................ 00199 : Rutinas de los Vectores de Interrupción 00200 ................................................................................ 00201 */ 00202 00203 /* END Events */ 00204 /* 00205 ________________________________________________________________________________ 00206 | 00207 | Funciones Prototipo 00208 |_______________________________________________________________________________ 00209 */ 00210 // Las Funciones Prototipo van aquí ! 00211 void setup() 00212 { 00213 terminal.baud(Baud_Rate); // Se configura la velocidad de transmisión 00214 terminal.printf("\r System is Wake Up!.\n\r"); //e inicia la comunicación a la Terminal. 00215 buzzer_test(); 00216 clear_screen(); 00217 } 00218 00219 void buzzer_test() // Software Blinking routine for LED 00220 { 00221 /* Prueba del Buzzer */ 00222 terminal.printf("Testing Buzzer... \n\r"); 00223 buzzer = Buzz_On; 00224 wait_ms(750); 00225 buzzer = Buzz_Off; 00226 wait_ms(125); 00227 buzzer = Buzz_On; 00228 wait_ms(250); 00229 buzzer = Buzz_Off; 00230 wait_ms(125); 00231 buzzer = Buzz_On; 00232 wait_ms(500); 00233 buzzer = Buzz_Off; 00234 terminal.printf("Buzzer OK ! \n\r"); 00235 } 00236 00237 void clear_screen() 00238 { 00239 //ANSI Terminal Commands 00240 terminal.printf("\x1B[2J"); 00241 terminal.printf("\x1B[H"); 00242 } 00243 00244 /* END routines */ 00245 00246 /* END program */ 00247 /*+----------------------------------------------------------------------------- 00248 *+ La documentación va aquí!: 00249 *+----------------------------------------------------------------------------- 00250 *+ Conexión al Led RGB: 00251 *+------------------------------------------------------------------------------ 00252 *+ 00253 *+ Los leds se pueden conectar a cualquier pin que se declare como DigitalOut. 00254 *+ El dispositivo puede drenar hasta 20ma por todas sus salidas a un voltaje de 00255 *+ 3.3V, pero se recomienda no exceder de 1mA por salida. 00256 *+ Esto se logra poniendo una resistencia limitadora de mínimo 330 Ohms. 00257 *+ 00258 *+ 00259 *+ PIN (Digital Out) 00260 *+ 00261 *+ Led ROJO Led VERDE Led AZUL 00262 *+ 00263 *+ R GND G B 00264 *+ O O O O 00265 *+ | | | | 00266 *+ | | | | 00267 *+ / | / / 00268 *+ \ 1K | \ 2K \ 2.2K 00269 *+ / | / / 00270 *+ \ | \ \ UTILIZANDO LED RGB DE CÁTODO COMÚN 00271 *+ | | | | 00272 *+ | | | | 00273 *+ ___|___ | ___|___ ___|___ 00274 *+ \ / | \ / \ / 00275 *+ \ / | \ / \ / 00276 *+ \ / | \ / \ / 00277 *+ __\/__ | __\/__ __\/__ 00278 *+ | | | | 00279 ** | | | | 00280 *+ |________|_______|________| 00281 *+ 00282 *+ 00283 *+ 00284 *+ PIN (Digital Out) 00285 *+ 00286 *+ Led ROJO Led VERDE Led AZUL 00287 *+ 00288 *+ R VCC G B 00289 *+ O O O O 00290 *+ | | | | 00291 *+ | | | | 00292 *+ / | / / 00293 *+ \ 2K | \ 1K \ 1K 00294 *+ / | / / 00295 *+ \ | \ \ UTILIZANDO LED RGB DE ÁNODO COMÚN 00296 *+ | | | | 00297 *+ | | | | 00298 *+ ___|___ | ___|___ ___|___ 00299 *+ /\ | /\ /\ 00300 *+ / \ | / \ / \ 00301 *+ / \ | / \ / \ 00302 *+ /______\ | /______\ /______\ 00303 *+ | | | | 00304 ** | | | | 00305 *+ |________|_______|________| 00306 *+ 00307 *+ 00308 *+ 00309 *+------------------------------------------------------------------------------ 00310 *+ Descripción del Coexionado del Buzzer 00311 *+------------------------------------------------------------------------------ 00312 *+ 00313 *+ 150 00314 *+ PWM Pin -----/\/\/\/-------| 00315 *+ | 00316 *+ | + 00317 *+ | 00318 *+ ( o ) BUZZER 00319 *+ | 00320 *+ | 00321 *+ | 00322 *+ | 00323 *+ ----- 00324 *+ --- 00325 *+ - 00326 *+ 00327 *+------------------------------------------------------------------------------ 00328 */ 00329 /* END documentation */ 00330 /* 00331 +-------------------------------------------------------------------------------- 00332 | EJERCICIO 00333 | 00334 | 1.- Este programa tambien acepta letras o caracteres? 00335 | 2.- Modificar este programa para: 00336 | a) Que solo acepte números 00337 | b) Agregar un contador de Número de Intentos 00338 | 00339 +-------------------------------------------------------------------------------- 00340 | 00341 | EXAMEN 00342 | 00343 | 1.- Modificar el programa para que despliegue el número de intentos para 00344 | adivinar el número secreto. 00345 | 2.- Modificar el programa para haga eco con la respuesta que le introducimos. 00346 | 3.- Bloquear el programa despues de cierto número de intentos 00347 | 4.- Modificar el programa para que el número secreto sea generado aleatoriamente. 00348 | a) Generar un Número Pseudo Aleatorio Mediante el Ticker 00349 | b) Utilizando la función RANDOMIZE 00350 | Suerte! 00351 +-------------------------------------------------------------------------------- 00352 | 00353 | T H E A N T U L I U S T E A M 00354 | Research, Development, Systems Equipment, Support & Spare Parts I n c. 00355 | (C) Copyright 1989-2014, All rigths Reserved 00356 | 00357 | This program is licensed under rules of 00358 | THE BEANERS TECHNOLOGIES PROYECT 00359 +------------------------------------------------------------------------------- 00360 */ 00361 /* END Mbed */
Generated on Tue Jul 12 2022 14:04:58 by
1.7.2