Gabriel Aviña
/
Info_lab4_Displays
Laboratorio de Informatica 4
main.cpp@0:ac8ede62cd19, 2014-03-13 (annotated)
- Committer:
- elchef
- Date:
- Thu Mar 13 05:56:09 2014 +0000
- Revision:
- 0:ac8ede62cd19
HOLA gafford xd
Who changed what in which revision?
User | Revision | Line number | New 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 | } |