Adivina el Número Secreto desde la Terminal Serial

Dependencies:   mbed

Revision:
0:f680c41c1640
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Sep 05 23:29:04 2019 +0000
@@ -0,0 +1,204 @@
+/* ###########################################################################
+**    Archivo        : main.c
+**    Proyecto       : STM32-103C8_Adivina
+**    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
+**
+**   Versión        : Beta
+**   Revisión       : A
+**   Release        : 0
+**   Bugs & Fixes   :
+**   Date           : 20/10/2019
+**                    Ejemplpo del Hola Mundo
+**                    27/09/2010 
+**                    
+**
+** ###########################################################################*/
+/*
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:  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
+/*
++-------------------------------------------------------------------------------
+|  Configuración de Puertos 
++-------------------------------------------------------------------------------
+*/
+DigitalOut verde (LED1);    // PC_13    (Green_Led)
+DigitalOut rojo  (PB_1);    // NC       (Red_Led)
+
+// *****    Host PC Terminal Communication channels
+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 
++-------------------------------------------------------------------------------
+*/
+//uint32_t Baud_Rate = 9600;                // Velocidad de Transmisión (Bauds)
+/*
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+|  Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+*/
+void Setup(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
+confSysClock();     // Configure system clock (72MHz HSE clock, 48MHz USB clock)
+Setup();            // Inicialización del sistema
+    terminal.printf ("ADIVINA\n\r");
+    rojo  = off;
+    verde = off;
+
+    while(TRUE) 
+    {
+Inicio:     terminal.printf(" DIGITE UN NUMERO SECRETO DE 0 A 9 \r\n");
+            char secreto = terminal.getc();
+            rojo = on;
+            verde = on;          
+ Intenta:   terminal.printf(" ADIVINA EL NUMERO: \r\n");
+            char respuesta = terminal.getc();
+            if( secreto < respuesta  ) 
+            {
+                terminal.printf(" Es mas Bajo  \r\n");
+                rojo = on;
+                verde = off;               
+                goto Intenta;
+            }
+            if( secreto > respuesta  ) 
+            {
+                terminal.printf(" Es mas Alto  \r\n");
+                rojo  = off;
+                verde = on;
+                goto Intenta;
+            }
+            if( secreto == respuesta ) 
+            {
+                terminal.printf(" CORRECTO!, Es igual a: %c \r\n",secreto);
+                rojo  = off;
+                verde = on;
+                wait(1.0);
+                rojo  = off;
+                verde = off;
+                wait(1.0);
+                rojo  = off;
+                verde = on;
+                wait(1.0);
+                terminal.printf(" Eres un Genio !!!  \r\n");
+                wait(1.0);
+                rojo  = on;
+                verde = off;
+                wait(1.0);
+                rojo  = off;
+                verde = on;
+            }
+        terminal.printf(" Quieres intentarlo de nuevo?  \r\n");
+        terminal.printf(" 0 = No \r\n 1 = Si  \r\n");
+            char opcion = terminal.getc();
+            if( opcion == '1' ) goto Inicio;
+            else if( opcion == '0' )
+            {
+                terminal.printf(" Eso es todo Amigos!  \r\n");
+                break;
+            }
+        }
+}
+
+/* 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.  
+  terminal.printf(" System is Wake Up!.\n\r");
+}              
+
+/* END routines */   
+ 
+/* END program */                
+
+/* END documentation */ 
+/*
++--------------------------------------------------------------------------------
+|                               EJERCICIO
+|
+| 1.-   Este programa tambien acepta letras o caracteres?
+| 2.-   Modificar este programa para: 
+|       a) Que solo acepte números
+|       b) Agregar un contador de Número de Intentos 
+|       
++--------------------------------------------------------------------------------
+|
+|                               EXAMEN
+|
+| 1.-   Modificar el programa para que despliegue el número de intentos para 
+|       adivinar el número secreto.
+| 2.-   Modificar el programa para haga eco con la respuesta que le introducimos.
+|
+| 3.-   Modificar el programa para que el número secreto sea generado aleatoriamente.
+|       a) Generar un Número Pseudo Aleatorio Mediante el Ticker
+|       b) Utilizando la función RANDOMIZE
+| Suerte!
++--------------------------------------------------------------------------------
+|
+|                     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 */ 
\ No newline at end of file