Examen

Dependencies:   mbed

Committer:
tetos43
Date:
Fri Sep 13 17:39:04 2019 +0000
Revision:
1:b593ea2a9b16
Parent:
0:f680c41c1640
Programa Adivina modificado como ejercicio de Examen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Antulius 0:f680c41c1640 1 /* ###########################################################################
Antulius 0:f680c41c1640 2 ** Archivo : main.c
tetos43 1:b593ea2a9b16 3 ** Proyecto : STM32-103C8_Adivina_Examen
Antulius 0:f680c41c1640 4 ** Procesador : STM32F103C8
Antulius 0:f680c41c1640 5 ** Herramienta : Mbed
Antulius 0:f680c41c1640 6 ** Version : Driver 01.01
Antulius 0:f680c41c1640 7 ** Compilador : GNU C Compiler
Antulius 0:f680c41c1640 8 ** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0
Antulius 0:f680c41c1640 9 ** Descripción :
Antulius 0:f680c41c1640 10 ** Este proyecto muestra la configuración y uso de la Terminal Serial
Antulius 0:f680c41c1640 11 ** This module contains user's application code.
Antulius 0:f680c41c1640 12 ** Componentes : Timer, etc .
Antulius 0:f680c41c1640 13 ** Configuraciones : Se puede seleccionar entre diferentes velocodades de
Antulius 0:f680c41c1640 14 ** transmisión
Antulius 0:f680c41c1640 15 ** Autores :
Antulius 0:f680c41c1640 16 ** ATEAM Development Group:
Antulius 0:f680c41c1640 17 ** - Antulio Morgado Valle
tetos43 1:b593ea2a9b16 18 ** - Héctor Rodríguez Altamirano
Antulius 0:f680c41c1640 19 **
Antulius 0:f680c41c1640 20 ** Versión : Beta
Antulius 0:f680c41c1640 21 ** Revisión : A
Antulius 0:f680c41c1640 22 ** Release : 0
Antulius 0:f680c41c1640 23 ** Bugs & Fixes :
Antulius 0:f680c41c1640 24 ** Date : 20/10/2019
tetos43 1:b593ea2a9b16 25 ** Programa adivina Modificado para examen
Antulius 0:f680c41c1640 26 ** 27/09/2010
Antulius 0:f680c41c1640 27 **
Antulius 0:f680c41c1640 28 **
Antulius 0:f680c41c1640 29 ** ###########################################################################*/
Antulius 0:f680c41c1640 30 /*
Antulius 0:f680c41c1640 31 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Antulius 0:f680c41c1640 32 : Includes
Antulius 0:f680c41c1640 33 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Antulius 0:f680c41c1640 34 */
Antulius 0:f680c41c1640 35
Antulius 0:f680c41c1640 36 #include "stm32f103c8t6.h"
Antulius 0:f680c41c1640 37 #include "mbed.h"
Antulius 0:f680c41c1640 38 #include "Serial.h"
Antulius 0:f680c41c1640 39 #include "stdio.h"
tetos43 1:b593ea2a9b16 40 #include "iostream" //Para usar cout
tetos43 1:b593ea2a9b16 41 //#include "stdlib.h"
Antulius 0:f680c41c1640 42 /*
Antulius 0:f680c41c1640 43 :...............................................................................
Antulius 0:f680c41c1640 44 : Definiciones
Antulius 0:f680c41c1640 45 :...............................................................................
Antulius 0:f680c41c1640 46 */
Antulius 0:f680c41c1640 47 #define on 0 // Estado para boton presionado
Antulius 0:f680c41c1640 48 #define off 1 // Estado para boton sin presionar
Antulius 0:f680c41c1640 49 #define hold 2 // Estado para boton mantenido
Antulius 0:f680c41c1640 50 #define release 3 // Estado para boton liberado
Antulius 0:f680c41c1640 51 #define FALSE 0 // Estado FALSO
Antulius 0:f680c41c1640 52 #define TRUE 1 // Estado VERDADERO
Antulius 0:f680c41c1640 53 /*
Antulius 0:f680c41c1640 54 +-------------------------------------------------------------------------------
Antulius 0:f680c41c1640 55 | Configuración de Puertos
Antulius 0:f680c41c1640 56 +-------------------------------------------------------------------------------
Antulius 0:f680c41c1640 57 */
Antulius 0:f680c41c1640 58 DigitalOut verde (LED1); // PC_13 (Green_Led)
Antulius 0:f680c41c1640 59 DigitalOut rojo (PB_1); // NC (Red_Led)
Antulius 0:f680c41c1640 60
Antulius 0:f680c41c1640 61 // ***** Host PC Terminal Communication channels
Antulius 0:f680c41c1640 62 Serial terminal (PA_2, PA_3); // Inicializa la comunicación serial a la PC (Tx,Rx)
Antulius 0:f680c41c1640 63 //Serial terminal(USBTX, USBRX,115200);// Tx, Rx Baud Rate - Terminal Serial por USB @ 115,200 Bauds
Antulius 0:f680c41c1640 64
Antulius 0:f680c41c1640 65 /*
Antulius 0:f680c41c1640 66 +-------------------------------------------------------------------------------
Antulius 0:f680c41c1640 67 | Variables Globales de Usuario
Antulius 0:f680c41c1640 68 +-------------------------------------------------------------------------------
Antulius 0:f680c41c1640 69 */
Antulius 0:f680c41c1640 70 //uint32_t Baud_Rate = 9600; // Velocidad de Transmisión (Bauds)
Antulius 0:f680c41c1640 71 /*
Antulius 0:f680c41c1640 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Antulius 0:f680c41c1640 73 | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
Antulius 0:f680c41c1640 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Antulius 0:f680c41c1640 75 */
Antulius 0:f680c41c1640 76 void Setup(void);
tetos43 1:b593ea2a9b16 77 void portada(void);
Antulius 0:f680c41c1640 78 /* END definitions */
Antulius 0:f680c41c1640 79
Antulius 0:f680c41c1640 80 /*
Antulius 0:f680c41c1640 81 #===============================================================================
Antulius 0:f680c41c1640 82 |
Antulius 0:f680c41c1640 83 | P R O G R A M A P R I N C I P A L
Antulius 0:f680c41c1640 84 |
Antulius 0:f680c41c1640 85 #===============================================================================
Antulius 0:f680c41c1640 86 */
Antulius 0:f680c41c1640 87 int main()
Antulius 0:f680c41c1640 88 { // Inicialización de variables, puertos e interrupciones
Antulius 0:f680c41c1640 89 confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock)
Antulius 0:f680c41c1640 90 Setup(); // Inicialización del sistema
tetos43 1:b593ea2a9b16 91 portada();
Antulius 0:f680c41c1640 92 terminal.printf ("ADIVINA\n\r");
Antulius 0:f680c41c1640 93 rojo = off;
Antulius 0:f680c41c1640 94 verde = off;
tetos43 1:b593ea2a9b16 95 int intentos=0;
tetos43 1:b593ea2a9b16 96 char secreto;
Antulius 0:f680c41c1640 97 while(TRUE)
Antulius 0:f680c41c1640 98 {
tetos43 1:b593ea2a9b16 99 Inicio: /*******************************************************************
tetos43 1:b593ea2a9b16 100 do{
tetos43 1:b593ea2a9b16 101 terminal.printf(" DIGITE UN NUMERO SECRETO DE 0 A 9 \r\n");
tetos43 1:b593ea2a9b16 102 secreto = terminal.getc();
tetos43 1:b593ea2a9b16 103 rojo = on;
tetos43 1:b593ea2a9b16 104 verde = on;
tetos43 1:b593ea2a9b16 105 }while(secreto < '0' || secreto > '9');
tetos43 1:b593ea2a9b16 106 Codigo de la version anterioe en la cual el numero secreto era
tetos43 1:b593ea2a9b16 107 introducido por el usuario
tetos43 1:b593ea2a9b16 108 ****************************************************************/
tetos43 1:b593ea2a9b16 109 secreto=rand()%10+48; //Genera un numero aleatorio
tetos43 1:b593ea2a9b16 110 terminal.printf("SE GENERO UN NUMERO SECRETO ALEATORIO \r\n");
tetos43 1:b593ea2a9b16 111 Intenta: intentos++;
tetos43 1:b593ea2a9b16 112 terminal.printf(" INTENTO NUMERO %d \r\n",intentos);
tetos43 1:b593ea2a9b16 113 terminal.printf(" ADIVINA EL NUMERO: \r\n");
Antulius 0:f680c41c1640 114 char respuesta = terminal.getc();
tetos43 1:b593ea2a9b16 115 terminal.printf(" Tu respuesta es: %c \r\n",respuesta);
Antulius 0:f680c41c1640 116 if( secreto < respuesta )
Antulius 0:f680c41c1640 117 {
Antulius 0:f680c41c1640 118 terminal.printf(" Es mas Bajo \r\n");
Antulius 0:f680c41c1640 119 rojo = on;
Antulius 0:f680c41c1640 120 verde = off;
Antulius 0:f680c41c1640 121 goto Intenta;
Antulius 0:f680c41c1640 122 }
Antulius 0:f680c41c1640 123 if( secreto > respuesta )
Antulius 0:f680c41c1640 124 {
Antulius 0:f680c41c1640 125 terminal.printf(" Es mas Alto \r\n");
Antulius 0:f680c41c1640 126 rojo = off;
Antulius 0:f680c41c1640 127 verde = on;
Antulius 0:f680c41c1640 128 goto Intenta;
Antulius 0:f680c41c1640 129 }
Antulius 0:f680c41c1640 130 if( secreto == respuesta )
Antulius 0:f680c41c1640 131 {
tetos43 1:b593ea2a9b16 132 intentos=0;
Antulius 0:f680c41c1640 133 terminal.printf(" CORRECTO!, Es igual a: %c \r\n",secreto);
Antulius 0:f680c41c1640 134 rojo = off;
Antulius 0:f680c41c1640 135 verde = on;
Antulius 0:f680c41c1640 136 wait(1.0);
Antulius 0:f680c41c1640 137 rojo = off;
Antulius 0:f680c41c1640 138 verde = off;
Antulius 0:f680c41c1640 139 wait(1.0);
Antulius 0:f680c41c1640 140 rojo = off;
Antulius 0:f680c41c1640 141 verde = on;
Antulius 0:f680c41c1640 142 wait(1.0);
Antulius 0:f680c41c1640 143 terminal.printf(" Eres un Genio !!! \r\n");
Antulius 0:f680c41c1640 144 wait(1.0);
Antulius 0:f680c41c1640 145 rojo = on;
Antulius 0:f680c41c1640 146 verde = off;
Antulius 0:f680c41c1640 147 wait(1.0);
Antulius 0:f680c41c1640 148 rojo = off;
Antulius 0:f680c41c1640 149 verde = on;
Antulius 0:f680c41c1640 150 }
Antulius 0:f680c41c1640 151 terminal.printf(" Quieres intentarlo de nuevo? \r\n");
Antulius 0:f680c41c1640 152 terminal.printf(" 0 = No \r\n 1 = Si \r\n");
Antulius 0:f680c41c1640 153 char opcion = terminal.getc();
Antulius 0:f680c41c1640 154 if( opcion == '1' ) goto Inicio;
Antulius 0:f680c41c1640 155 else if( opcion == '0' )
Antulius 0:f680c41c1640 156 {
Antulius 0:f680c41c1640 157 terminal.printf(" Eso es todo Amigos! \r\n");
Antulius 0:f680c41c1640 158 break;
Antulius 0:f680c41c1640 159 }
Antulius 0:f680c41c1640 160 }
Antulius 0:f680c41c1640 161 }
Antulius 0:f680c41c1640 162
Antulius 0:f680c41c1640 163 /* END main */
Antulius 0:f680c41c1640 164
Antulius 0:f680c41c1640 165 /*
Antulius 0:f680c41c1640 166 ................................................................................
Antulius 0:f680c41c1640 167 : Rutinas de los Vectores de Interrupción
Antulius 0:f680c41c1640 168 ................................................................................
Antulius 0:f680c41c1640 169 */
Antulius 0:f680c41c1640 170
Antulius 0:f680c41c1640 171 /* END Events */
Antulius 0:f680c41c1640 172 /*
Antulius 0:f680c41c1640 173 ________________________________________________________________________________
Antulius 0:f680c41c1640 174 |
Antulius 0:f680c41c1640 175 | Funciones Prototipo
Antulius 0:f680c41c1640 176 |_______________________________________________________________________________
Antulius 0:f680c41c1640 177 */
Antulius 0:f680c41c1640 178 // Las Funciones Prototipo van aquí !
Antulius 0:f680c41c1640 179 void Setup()
Antulius 0:f680c41c1640 180 {
Antulius 0:f680c41c1640 181 // terminal.baud(Baud_Rate); // Se configura la velocidad de transmisión e inicia la comunicación serial.
Antulius 0:f680c41c1640 182 terminal.baud(115200); // Se configura la velocidad de transmisión e inicia la comunicación serial.
Antulius 0:f680c41c1640 183 terminal.printf(" System is Wake Up!.\n\r");
Antulius 0:f680c41c1640 184 }
Antulius 0:f680c41c1640 185
tetos43 1:b593ea2a9b16 186 void portada(void) // Implementacion de la portada
tetos43 1:b593ea2a9b16 187 {
tetos43 1:b593ea2a9b16 188 //cout necesita la biblioteca "iostream"
tetos43 1:b593ea2a9b16 189 cout << "\t\t\t\t\t\tISTITUTO POLITECNICO NACIONAL\n\n\n";
tetos43 1:b593ea2a9b16 190 cout << "\t\t\t\t ESCUELA SUPERIOR DE INGENIERIA MECNICA Y "
tetos43 1:b593ea2a9b16 191 << "ELECTRICA\n\n\n";
tetos43 1:b593ea2a9b16 192 cout << "\t\t\t\t\tEXAMEN DE ANALISIS NUMERICO\n\n\n";
tetos43 1:b593ea2a9b16 193 cout << "\t\t\t\t\tPROFESOR: MORGADO VALLE ANTULIO\n\n\n";
tetos43 1:b593ea2a9b16 194 cout << "\t\t\t\t\tALUMNO: RODRIGUEZ ALTAMIRANO HECTOR"
tetos43 1:b593ea2a9b16 195 << "\n\n\n\n\n" << endl;
tetos43 1:b593ea2a9b16 196 }
Antulius 0:f680c41c1640 197 /* END routines */
Antulius 0:f680c41c1640 198
Antulius 0:f680c41c1640 199 /* END program */
Antulius 0:f680c41c1640 200
Antulius 0:f680c41c1640 201 /* END documentation */
Antulius 0:f680c41c1640 202 /*
Antulius 0:f680c41c1640 203 +--------------------------------------------------------------------------------
Antulius 0:f680c41c1640 204 | EJERCICIO
Antulius 0:f680c41c1640 205 |
Antulius 0:f680c41c1640 206 | 1.- Este programa tambien acepta letras o caracteres?
Antulius 0:f680c41c1640 207 | 2.- Modificar este programa para:
Antulius 0:f680c41c1640 208 | a) Que solo acepte números
Antulius 0:f680c41c1640 209 | b) Agregar un contador de Número de Intentos
Antulius 0:f680c41c1640 210 |
Antulius 0:f680c41c1640 211 +--------------------------------------------------------------------------------
Antulius 0:f680c41c1640 212 |
Antulius 0:f680c41c1640 213 | EXAMEN
Antulius 0:f680c41c1640 214 |
Antulius 0:f680c41c1640 215 | 1.- Modificar el programa para que despliegue el número de intentos para
Antulius 0:f680c41c1640 216 | adivinar el número secreto.
Antulius 0:f680c41c1640 217 | 2.- Modificar el programa para haga eco con la respuesta que le introducimos.
Antulius 0:f680c41c1640 218 |
Antulius 0:f680c41c1640 219 | 3.- Modificar el programa para que el número secreto sea generado aleatoriamente.
Antulius 0:f680c41c1640 220 | a) Generar un Número Pseudo Aleatorio Mediante el Ticker
Antulius 0:f680c41c1640 221 | b) Utilizando la función RANDOMIZE
Antulius 0:f680c41c1640 222 | Suerte!
Antulius 0:f680c41c1640 223 +--------------------------------------------------------------------------------
Antulius 0:f680c41c1640 224 |
Antulius 0:f680c41c1640 225 | T H E A N T U L I U S T E A M
Antulius 0:f680c41c1640 226 | Research, Development, Systems Equipment, Support & Spare Parts I n c.
Antulius 0:f680c41c1640 227 | (C) Copyright 1989-2014, All rigths Reserved
Antulius 0:f680c41c1640 228 |
Antulius 0:f680c41c1640 229 | This program is licensed under rules of
Antulius 0:f680c41c1640 230 | THE BEANERS TECHNOLOGIES PROYECT
Antulius 0:f680c41c1640 231 +-------------------------------------------------------------------------------
Antulius 0:f680c41c1640 232 */
Antulius 0:f680c41c1640 233 /* END Mbed */