Programa para calcular la raíz de una función por el método de Bisección.

Dependencies:   mbed

Committer:
JavierMarcelo98
Date:
Fri Oct 25 14:21:11 2019 +0000
Revision:
5:7bd28f4ca12b
Parent:
4:e8498d695fc2
Child:
6:57457ad17880
Programa de Raices Reales.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Antulius 0:f680c41c1640 1 /* ###########################################################################
Antulius 0:f680c41c1640 2 ** Archivo : main.c
ArturoRiosRamos 3:7d496863c448 3 ** Proyecto : STM32-103C8_Portada
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
JavierMarcelo98 4:e8498d695fc2 18 ** - Marcelo Padron Javier
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 :
JavierMarcelo98 4:e8498d695fc2 24 ** Date : 22/10/2019
JavierMarcelo98 4:e8498d695fc2 25 **
ArturoRiosRamos 3:7d496863c448 26 **
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"
Antulius 0:f680c41c1640 40 /*
Antulius 0:f680c41c1640 41 :...............................................................................
Antulius 0:f680c41c1640 42 : Definiciones
Antulius 0:f680c41c1640 43 :...............................................................................
Antulius 0:f680c41c1640 44 */
Antulius 0:f680c41c1640 45 #define on 0 // Estado para boton presionado
Antulius 0:f680c41c1640 46 #define off 1 // Estado para boton sin presionar
Antulius 0:f680c41c1640 47 #define hold 2 // Estado para boton mantenido
Antulius 0:f680c41c1640 48 #define release 3 // Estado para boton liberado
Antulius 0:f680c41c1640 49 #define FALSE 0 // Estado FALSO
Antulius 0:f680c41c1640 50 #define TRUE 1 // Estado VERDADERO
JavierMarcelo98 4:e8498d695fc2 51 #define Ticker_Rate 1000 // Tiempo del Ticker
JavierMarcelo98 4:e8498d695fc2 52 ////////////////////////////////////////// Definimos las notas notas musicales y su frecuencia.
Antulius 0:f680c41c1640 53 /*
Antulius 0:f680c41c1640 54 +-------------------------------------------------------------------------------
Antulius 0:f680c41c1640 55 | Configuración de Puertos
Antulius 0:f680c41c1640 56 +-------------------------------------------------------------------------------
JavierMarcelo98 4:e8498d695fc2 57 */
JavierMarcelo98 5:7bd28f4ca12b 58 DigitalOut verde (LED1); // NC (Green_Led)
JavierMarcelo98 4:e8498d695fc2 59 DigitalOut Led_Monitor (PB_1); // Led monitor de la Tarjeta STM32F103C8
JavierMarcelo98 4:e8498d695fc2 60 Serial terminal (PA_2, PA_3); // Inicializa la comunicación serial a la PC (Tx,Rx)
JavierMarcelo98 4:e8498d695fc2 61 //Serial terminal(USBTX, USBRX,115200);// Tx, Rx Baud Rate - Terminal Serial por USB @ 115,200 Bauds
Antulius 0:f680c41c1640 62
Antulius 0:f680c41c1640 63 /*
Antulius 0:f680c41c1640 64 +-------------------------------------------------------------------------------
JavierMarcelo98 4:e8498d695fc2 65 | Variables Globales de Usuario
JavierMarcelo98 4:e8498d695fc2 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Antulius 0:f680c41c1640 67 */
Antulius 0:f680c41c1640 68 /*
Antulius 0:f680c41c1640 69 | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
Antulius 0:f680c41c1640 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Antulius 0:f680c41c1640 71 */
ArturoRiosRamos 3:7d496863c448 72 void Portada();
JavierMarcelo98 5:7bd28f4ca12b 73 void Calculos();
Antulius 0:f680c41c1640 74 void Setup(void);
Antulius 0:f680c41c1640 75 /* END definitions */
Antulius 0:f680c41c1640 76
Antulius 0:f680c41c1640 77 /*
Antulius 0:f680c41c1640 78 #===============================================================================
Antulius 0:f680c41c1640 79 |
Antulius 0:f680c41c1640 80 | P R O G R A M A P R I N C I P A L
Antulius 0:f680c41c1640 81 |
Antulius 0:f680c41c1640 82 #===============================================================================
Antulius 0:f680c41c1640 83 */
Antulius 0:f680c41c1640 84 int main()
JavierMarcelo98 4:e8498d695fc2 85 { // Inicialización de variables, puertos e interrupciones // Configure system clock (72MHz HSE clock, 48MHz USB clock)
Antulius 0:f680c41c1640 86 Setup(); // Inicialización del sistema
JavierMarcelo98 4:e8498d695fc2 87 Portada(); //Mandar a llamar a la funcion Portada.
JavierMarcelo98 5:7bd28f4ca12b 88 Calculos(); //Mandar a llamar a la funcion Calculos.
ArturoRiosRamos 3:7d496863c448 89 }
Antulius 0:f680c41c1640 90 /* END main */
Antulius 0:f680c41c1640 91
Antulius 0:f680c41c1640 92 /*
Antulius 0:f680c41c1640 93 ................................................................................
Antulius 0:f680c41c1640 94 : Rutinas de los Vectores de Interrupción
Antulius 0:f680c41c1640 95 ................................................................................
Antulius 0:f680c41c1640 96 */
Antulius 0:f680c41c1640 97
Antulius 0:f680c41c1640 98 /* END Events */
Antulius 0:f680c41c1640 99 /*
Antulius 0:f680c41c1640 100 ________________________________________________________________________________
Antulius 0:f680c41c1640 101 |
Antulius 0:f680c41c1640 102 | Funciones Prototipo
Antulius 0:f680c41c1640 103 |_______________________________________________________________________________
Antulius 0:f680c41c1640 104 */
Antulius 0:f680c41c1640 105 // Las Funciones Prototipo van aquí !
Antulius 0:f680c41c1640 106 void Setup()
Antulius 0:f680c41c1640 107 {
Antulius 0:f680c41c1640 108 // terminal.baud(Baud_Rate); // Se configura la velocidad de transmisión e inicia la comunicación serial.
JavierMarcelo98 4:e8498d695fc2 109 terminal.baud(115200); // Se configura la velocidad de transmisión e inicia la comunicación serial.
JavierMarcelo98 5:7bd28f4ca12b 110 }
JavierMarcelo98 5:7bd28f4ca12b 111 void Portada()//Funcion Portada
JavierMarcelo98 4:e8498d695fc2 112 {
JavierMarcelo98 5:7bd28f4ca12b 113 terminal.printf("\n\r\t\e[1;32m0101 0101 010101 01 10 0101 0101 0101 0101 0101 0101 0101 01 10 0101 0101\e[0m");
JavierMarcelo98 5:7bd28f4ca12b 114 terminal.printf("\n\r\t\e[1;32m01 01 01 010 010 01 0 0 1 01 0 1 10 01 010 10 01 0 1\e[0m");
JavierMarcelo98 5:7bd28f4ca12b 115 terminal.printf("\n\r\t\e[1;32m0101 0101 01 01 1 10 0101 1 0101 01 0101 10 0101 01 1 10 01 0 1\e[0m");
JavierMarcelo98 5:7bd28f4ca12b 116 terminal.printf("\n\r\t\e[1;32m01 01 01 01 10 01 0 0 1 01 0 1 10 01 01 010 01 0 1\e[0m");
JavierMarcelo98 5:7bd28f4ca12b 117 terminal.printf("\n\r\t\e[1;32m0101 0101 010101 01 10 0101 0101 0 1 0101 0 1 10 0101 01 10 0101 0101\e[0m");
JavierMarcelo98 5:7bd28f4ca12b 118 terminal.printf("\n\n\r\t\e[1;32m \'NUESTROS COLORES VERDE \e[0m\e[1;37mY BLANCO, POR QUE EL\e[0m\e[1;31m ROJO LO LLEVAMOS EN LA SANGRE!!!\'\e[0m\n\n");
JavierMarcelo98 5:7bd28f4ca12b 119 terminal.printf("\n\r\t\t\e[1;37m ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA\e[0m");
JavierMarcelo98 5:7bd28f4ca12b 120 terminal.printf("\n\n\r\t\t\e[1;37m INGENIERIA EN COMUNICACIONES Y ELECTRONICA\e[0m");
JavierMarcelo98 5:7bd28f4ca12b 121 terminal.printf("\n\n\r\t\t\e[1;37m ANALISIS NUMERICO\e[0m");
JavierMarcelo98 5:7bd28f4ca12b 122 terminal.printf("\n\n\r\t\t\e[1;37m PROGRAMA: RAICES REALES\e[0m");
JavierMarcelo98 5:7bd28f4ca12b 123 terminal.printf("\n\n\r\t\t\e[1;37m ALUMNO: MARCELO PADRON JAVIER\e[0m");
JavierMarcelo98 5:7bd28f4ca12b 124 terminal.printf("\n\n\r\t\t\e[1;37m GRUPO: 4CV2\e[0m\n\n");
JavierMarcelo98 5:7bd28f4ca12b 125 wait(3.0);//Retardo de 3 segundos
JavierMarcelo98 4:e8498d695fc2 126 }
JavierMarcelo98 5:7bd28f4ca12b 127 void Calculos()
JavierMarcelo98 4:e8498d695fc2 128 {
JavierMarcelo98 5:7bd28f4ca12b 129 float a,b,c;
JavierMarcelo98 5:7bd28f4ca12b 130 float x1,x2,x3,ax,bx;
JavierMarcelo98 5:7bd28f4ca12b 131 terminal.printf("\n\r\t\e[1;37mIntroduce los valores de a, b, c.\e[0m\n");
JavierMarcelo98 5:7bd28f4ca12b 132 terminal.printf("\n\r\t\e[1;37ma = \e[0m\n"); a = terminal.getc();
JavierMarcelo98 5:7bd28f4ca12b 133 terminal.printf("\n\r\t\e[1;37mb = \e[0m\n"); b = terminal.getc();
JavierMarcelo98 5:7bd28f4ca12b 134 terminal.printf("\n\r\t\e[1;37mc = \e[0m\n"); c = terminal.getc();
JavierMarcelo98 5:7bd28f4ca12b 135 c= sqrt(float (b*b)- 4*a*c);
JavierMarcelo98 5:7bd28f4ca12b 136 ax=(-b-x3);
JavierMarcelo98 5:7bd28f4ca12b 137 x1=ax/(2*a);
JavierMarcelo98 5:7bd28f4ca12b 138 bx=(-b+x3);
JavierMarcelo98 5:7bd28f4ca12b 139 x2=(-b+x3)/(2*a);
JavierMarcelo98 5:7bd28f4ca12b 140 terminal.printf("\n\r\t\e[1;37mEl valor de x1 es %.2f \e[0m\n",x1);
JavierMarcelo98 5:7bd28f4ca12b 141 terminal.printf("\n\r\t\e[1;37mEl valor de x2 es %.2f \e[0m\n",x2);
JavierMarcelo98 5:7bd28f4ca12b 142 if(ax>0 || bx>0)
JavierMarcelo98 4:e8498d695fc2 143 {
JavierMarcelo98 5:7bd28f4ca12b 144 terminal.printf("\n\r\t\e[1;37mLa ecuacion es real\e[0m\n");
JavierMarcelo98 4:e8498d695fc2 145 }
JavierMarcelo98 5:7bd28f4ca12b 146 else
JavierMarcelo98 5:7bd28f4ca12b 147 {
JavierMarcelo98 5:7bd28f4ca12b 148 terminal.printf("\n\r\t\e[1;37mLa ecuacion no es real\e[0m\n");
JavierMarcelo98 5:7bd28f4ca12b 149 }
JavierMarcelo98 5:7bd28f4ca12b 150 }
Antulius 0:f680c41c1640 151 /* END routines */
Antulius 0:f680c41c1640 152
Antulius 0:f680c41c1640 153 /* END program */
Antulius 0:f680c41c1640 154
Antulius 0:f680c41c1640 155 /* END documentation */
Antulius 0:f680c41c1640 156 /*
ArturoRiosRamos 3:7d496863c448 157
Antulius 0:f680c41c1640 158 +--------------------------------------------------------------------------------
Antulius 0:f680c41c1640 159 |
Antulius 0:f680c41c1640 160 | T H E A N T U L I U S T E A M
Antulius 0:f680c41c1640 161 | Research, Development, Systems Equipment, Support & Spare Parts I n c.
Antulius 0:f680c41c1640 162 | (C) Copyright 1989-2014, All rigths Reserved
Antulius 0:f680c41c1640 163 |
Antulius 0:f680c41c1640 164 | This program is licensed under rules of
Antulius 0:f680c41c1640 165 | THE BEANERS TECHNOLOGIES PROYECT
Antulius 0:f680c41c1640 166 +-------------------------------------------------------------------------------
Antulius 0:f680c41c1640 167 */
Antulius 0:f680c41c1640 168 /* END Mbed */