Laboratorio de Informatica 4

Dependencies:   mbed

Committer:
elchef
Date:
Thu Mar 13 05:56:09 2014 +0000
Revision:
0:ac8ede62cd19
HOLA gafford xd

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elchef 0:ac8ede62cd19 1 #include "mbed.h"
elchef 0:ac8ede62cd19 2 #define MEDIDA 10
elchef 0:ac8ede62cd19 3 DigitalOut myled(LED3);
elchef 0:ac8ede62cd19 4 // A B C D E F G Mas significativo a menor
elchef 0:ac8ede62cd19 5 BusOut Display (D4, D5, D8, D7, D6, D3, D2);
elchef 0:ac8ede62cd19 6 // A B C D E F G
elchef 0:ac8ede62cd19 7 BusOut Display2 (PTD2, PTD3, PTE1, PTE0, PTD1, PTD0, PTB0);
elchef 0:ac8ede62cd19 8 DigitalIn Boton (PTC2);
elchef 0:ac8ede62cd19 9 DigitalOut Punto_Decimal(PTD5);
elchef 0:ac8ede62cd19 10 DigitalOut Led_Prueba(LED1);
elchef 0:ac8ede62cd19 11 AnalogIn Volt_Ohmetro(PTB1);
elchef 0:ac8ede62cd19 12 AnalogIn Volt_In(PTB2);
elchef 0:ac8ede62cd19 13 Timer reloj;
elchef 0:ac8ede62cd19 14
elchef 0:ac8ede62cd19 15 Serial pc(USBTX, USBRX);
elchef 0:ac8ede62cd19 16
elchef 0:ac8ede62cd19 17 float Volt_Out, Tiempo_Led, Tiempo, Prom_Val, Vin, R1;
elchef 0:ac8ede62cd19 18 float Voltajes_por_seg[MEDIDA + 1];
elchef 0:ac8ede62cd19 19 bool Flag_Boton, Cambiar;
elchef 0:ac8ede62cd19 20
elchef 0:ac8ede62cd19 21 int CeroAlNueve(int paso)
elchef 0:ac8ede62cd19 22 {
elchef 0:ac8ede62cd19 23 int Valor = 0;
elchef 0:ac8ede62cd19 24 switch (paso) {
elchef 0:ac8ede62cd19 25 case 0:
elchef 0:ac8ede62cd19 26 Valor = 63;
elchef 0:ac8ede62cd19 27 break;
elchef 0:ac8ede62cd19 28 case 1:
elchef 0:ac8ede62cd19 29 Valor = 6;
elchef 0:ac8ede62cd19 30 break;
elchef 0:ac8ede62cd19 31 case 2:
elchef 0:ac8ede62cd19 32 Valor = 91;
elchef 0:ac8ede62cd19 33 break;
elchef 0:ac8ede62cd19 34 case 3:
elchef 0:ac8ede62cd19 35 Valor = 79;
elchef 0:ac8ede62cd19 36 break;
elchef 0:ac8ede62cd19 37 case 4:
elchef 0:ac8ede62cd19 38 Valor = 102;
elchef 0:ac8ede62cd19 39 break;
elchef 0:ac8ede62cd19 40 case 5:
elchef 0:ac8ede62cd19 41 Valor = 109;
elchef 0:ac8ede62cd19 42 break;
elchef 0:ac8ede62cd19 43 case 6:
elchef 0:ac8ede62cd19 44 Valor = 125;
elchef 0:ac8ede62cd19 45 break;
elchef 0:ac8ede62cd19 46 case 7:
elchef 0:ac8ede62cd19 47 Valor = 7;
elchef 0:ac8ede62cd19 48 break;
elchef 0:ac8ede62cd19 49 case 8:
elchef 0:ac8ede62cd19 50 Valor = 127;
elchef 0:ac8ede62cd19 51 break;
elchef 0:ac8ede62cd19 52 case 9:
elchef 0:ac8ede62cd19 53 Valor = 103;
elchef 0:ac8ede62cd19 54 break;
elchef 0:ac8ede62cd19 55 }
elchef 0:ac8ede62cd19 56 return Valor;
elchef 0:ac8ede62cd19 57 }
elchef 0:ac8ede62cd19 58
elchef 0:ac8ede62cd19 59 void PrintDisplay(int contador)
elchef 0:ac8ede62cd19 60 {
elchef 0:ac8ede62cd19 61 if(Punto_Decimal=1) {
elchef 0:ac8ede62cd19 62 contador = contador*10;
elchef 0:ac8ede62cd19 63 } else {
elchef 0:ac8ede62cd19 64 contador = contador;
elchef 0:ac8ede62cd19 65 }
elchef 0:ac8ede62cd19 66 int unidad, decena = 0;
elchef 0:ac8ede62cd19 67 decena = contador/10;
elchef 0:ac8ede62cd19 68 Display = CeroAlNueve(decena);
elchef 0:ac8ede62cd19 69 unidad = contador - decena*10;
elchef 0:ac8ede62cd19 70 Display2 = CeroAlNueve(unidad);
elchef 0:ac8ede62cd19 71 }
elchef 0:ac8ede62cd19 72
elchef 0:ac8ede62cd19 73 float promedio (float arreglo[])
elchef 0:ac8ede62cd19 74 {
elchef 0:ac8ede62cd19 75 float acumulado = 0;
elchef 0:ac8ede62cd19 76 for (int count = 0; count < MEDIDA; count++) {
elchef 0:ac8ede62cd19 77 acumulado += Voltajes_por_seg[count]; //sumo los datos
elchef 0:ac8ede62cd19 78 }
elchef 0:ac8ede62cd19 79 return acumulado/MEDIDA; // los divido por la cantidad de numeros
elchef 0:ac8ede62cd19 80 }
elchef 0:ac8ede62cd19 81
elchef 0:ac8ede62cd19 82 int main()
elchef 0:ac8ede62cd19 83 {
elchef 0:ac8ede62cd19 84 reloj.start();
elchef 0:ac8ede62cd19 85 Tiempo_Led = reloj.read();
elchef 0:ac8ede62cd19 86 while (Tiempo_Led <= 1.5) {
elchef 0:ac8ede62cd19 87 Tiempo_Led = reloj.read();
elchef 0:ac8ede62cd19 88 Led_Prueba = 0;
elchef 0:ac8ede62cd19 89 }
elchef 0:ac8ede62cd19 90 Led_Prueba = 1;
elchef 0:ac8ede62cd19 91 reloj.reset();
elchef 0:ac8ede62cd19 92 while (1) {
elchef 0:ac8ede62cd19 93 Flag_Boton = 0;
elchef 0:ac8ede62cd19 94 while(Flag_Boton != 1) {
elchef 0:ac8ede62cd19 95 Tiempo = reloj.read();
elchef 0:ac8ede62cd19 96 if(Tiempo >= 0.5) {
elchef 0:ac8ede62cd19 97 Vin = (Volt_Out*3.3)*(5600/660);
elchef 0:ac8ede62cd19 98 R1 = (10*Vin)/(3.3 - Vin); // R1 = (R2*Vin)/(Vout - Vin);
elchef 0:ac8ede62cd19 99 Voltajes_por_seg[MEDIDA]= R1;
elchef 0:ac8ede62cd19 100 reloj.reset();
elchef 0:ac8ede62cd19 101 for (int indice = 0; indice <= MEDIDA; indice++) {
elchef 0:ac8ede62cd19 102 Voltajes_por_seg[indice]= Voltajes_por_seg[indice+1];
elchef 0:ac8ede62cd19 103 }
elchef 0:ac8ede62cd19 104 }
elchef 0:ac8ede62cd19 105 if (Boton == 1) {
elchef 0:ac8ede62cd19 106 while (Tiempo < 1) {
elchef 0:ac8ede62cd19 107 Tiempo = reloj.read();
elchef 0:ac8ede62cd19 108 Flag_Boton = 1;
elchef 0:ac8ede62cd19 109 }
elchef 0:ac8ede62cd19 110 reloj.reset();
elchef 0:ac8ede62cd19 111 }
elchef 0:ac8ede62cd19 112 Prom_Val = promedio(Voltajes_por_seg);
elchef 0:ac8ede62cd19 113 if(Prom_Val > 10) {
elchef 0:ac8ede62cd19 114 PrintDisplay(Prom_Val);
elchef 0:ac8ede62cd19 115 }
elchef 0:ac8ede62cd19 116 }
elchef 0:ac8ede62cd19 117 Flag_Boton = 1;
elchef 0:ac8ede62cd19 118 while(Flag_Boton != 0) {
elchef 0:ac8ede62cd19 119 Tiempo = reloj.read();
elchef 0:ac8ede62cd19 120 if(Tiempo >= 0.5) {
elchef 0:ac8ede62cd19 121 Volt_Out = Volt_In*30.3; // La resistencia número 1 es 2.2kOhm y 2 de 18Kohm
elchef 0:ac8ede62cd19 122 Voltajes_por_seg[10]= Volt_Out;
elchef 0:ac8ede62cd19 123 reloj.reset();
elchef 0:ac8ede62cd19 124 for (int indice = 0; indice <= MEDIDA; indice++) {
elchef 0:ac8ede62cd19 125 Voltajes_por_seg[indice]= Voltajes_por_seg[indice+1];
elchef 0:ac8ede62cd19 126 }
elchef 0:ac8ede62cd19 127 }
elchef 0:ac8ede62cd19 128 if (Boton == 1) {
elchef 0:ac8ede62cd19 129 while (Tiempo < 1) {
elchef 0:ac8ede62cd19 130 Tiempo = reloj.read();
elchef 0:ac8ede62cd19 131 Flag_Boton = 0;
elchef 0:ac8ede62cd19 132 }
elchef 0:ac8ede62cd19 133 reloj.reset();
elchef 0:ac8ede62cd19 134 }
elchef 0:ac8ede62cd19 135 Prom_Val = promedio(Voltajes_por_seg);
elchef 0:ac8ede62cd19 136 if(Prom_Val > 10) {
elchef 0:ac8ede62cd19 137 PrintDisplay(Prom_Val);
elchef 0:ac8ede62cd19 138 }
elchef 0:ac8ede62cd19 139
elchef 0:ac8ede62cd19 140 }
elchef 0:ac8ede62cd19 141 }
elchef 0:ac8ede62cd19 142 }