Atope
/
PRACTICA3
ccvcv
Fork of PRACTICA3 by
main.cpp@4:71a955ddc240, 2017-11-10 (annotated)
- Committer:
- carlospomar
- Date:
- Fri Nov 10 13:05:19 2017 +0000
- Revision:
- 4:71a955ddc240
- Parent:
- 3:30f1e2f8308c
- Child:
- 5:18feff1607c9
no funciona a?n
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
carlospomar | 0:73a5b9689b80 | 1 | #include "mbed.h" |
carlospomar | 3:30f1e2f8308c | 2 | #include "TextLCD.h" |
carlospomar | 1:591fea5f363b | 3 | |
carlospomar | 3:30f1e2f8308c | 4 | #define constante (3,3^2)/((2^16)-1)*100) // valor constante para el cálculo de Vrms |
carlospomar | 2:0ef1b1712e64 | 5 | #define vector 100 // valor para definir el tamaño de los búfferes de muestreo |
carlospomar | 3:30f1e2f8308c | 6 | |
carlospomar | 4:71a955ddc240 | 7 | //TextLCD lcd(6 puertos, TextLCD::LCD16x2); rs,e,d4-d7 |
carlospomar | 3:30f1e2f8308c | 8 | InterruptIn Sw (); //pulsador en el puerto |
carlospomar | 3:30f1e2f8308c | 9 | AnalogIn leer (); // leer del puerto |
carlospomar | 1:591fea5f363b | 10 | Ticker muestreo; |
carlospomar | 1:591fea5f363b | 11 | Ticker visualizar; |
carlospomar | 1:591fea5f363b | 12 | int contt=0; |
carlospomar | 1:591fea5f363b | 13 | int contm=0; |
carlospomar | 2:0ef1b1712e64 | 14 | int contvpp=0; |
carlospomar | 3:30f1e2f8308c | 15 | int dato=0, // variable para seleccionar el dato a mostrar |
carlospomar | 2:0ef1b1712e64 | 16 | int flag1; // variable para indicar cuando se tiene que cambiar de buffer |
carlospomar | 2:0ef1b1712e64 | 17 | int flag2; // variable para indicar cuando se tiene que |
carlospomar | 2:0ef1b1712e64 | 18 | int flag3; // variable para indicar cuando se tiene que calcular Vpp |
carlospomar | 4:71a955ddc240 | 19 | int flag4; // variable para indicar cuando se llena el buffer |
carlospomar | 3:30f1e2f8308c | 20 | int Vpmax=0; // variable para guardar el valor del pico superior |
carlospomar | 4:71a955ddc240 | 21 | int Vpmin=0; // variable para guardar el valor del pico inferior |
carlospomar | 2:0ef1b1712e64 | 22 | int Vpp=0; |
carlospomar | 2:0ef1b1712e64 | 23 | float buffer1 [vector]; // buffer de muestreo 1 de tamaño 100 |
carlospomar | 2:0ef1b1712e64 | 24 | float buffer2 [vector]; // buffer de muestreo 2 de tamaño 100 |
carlospomar | 2:0ef1b1712e64 | 25 | float Vrms; // variabla para guardar el valor de RMS |
carlospomar | 3:30f1e2f8308c | 26 | float valor; |
carlospomar | 3:30f1e2f8308c | 27 | float sumatorio; // variable que es la suma de los valores de la muestra |
carlospomar | 2:0ef1b1712e64 | 28 | float muestra; // variabla para hacer las operaciones |
carlospomar | 0:73a5b9689b80 | 29 | |
carlospomar | 1:591fea5f363b | 30 | |
carlospomar | 3:30f1e2f8308c | 31 | //void temporizador () |
carlospomar | 3:30f1e2f8308c | 32 | //{ |
carlospomar | 3:30f1e2f8308c | 33 | // if (flag2) { |
carlospomar | 3:30f1e2f8308c | 34 | // |
carlospomar | 3:30f1e2f8308c | 35 | // } |
carlospomar | 3:30f1e2f8308c | 36 | // contt++; |
carlospomar | 3:30f1e2f8308c | 37 | // if (contt==100) { |
carlospomar | 3:30f1e2f8308c | 38 | // contt =0; |
carlospomar | 3:30f1e2f8308c | 39 | // flag2 =!flag2; |
carlospomar | 3:30f1e2f8308c | 40 | // bufferlleno=0; |
carlospomar | 3:30f1e2f8308c | 41 | // } |
carlospomar | 3:30f1e2f8308c | 42 | //} |
carlospomar | 1:591fea5f363b | 43 | |
carlospomar | 1:591fea5f363b | 44 | void boton() |
carlospomar | 1:591fea5f363b | 45 | { |
carlospomar | 1:591fea5f363b | 46 | dato++; |
carlospomar | 1:591fea5f363b | 47 | if (dato>1) { |
carlospomar | 1:591fea5f363b | 48 | dato = 0; |
carlospomar | 0:73a5b9689b80 | 49 | } |
carlospomar | 0:73a5b9689b80 | 50 | } |
carlospomar | 1:591fea5f363b | 51 | |
carlospomar | 4:71a955ddc240 | 52 | //void LCD() |
carlospomar | 4:71a955ddc240 | 53 | //{ |
carlospomar | 4:71a955ddc240 | 54 | // lcd.cls(); |
carlospomar | 4:71a955ddc240 | 55 | // switch (dato) { |
carlospomar | 4:71a955ddc240 | 56 | // case 0: |
carlospomar | 4:71a955ddc240 | 57 | // lcdprintf("Vrms: %n V",Vrms); //Vrms :\n%3.3f V,Vrms |
carlospomar | 4:71a955ddc240 | 58 | // break; |
carlospomar | 4:71a955ddc240 | 59 | // case 1: |
carlospomar | 4:71a955ddc240 | 60 | // lcdprintf("Vpp: %n V",Vpp); // |
carlospomar | 4:71a955ddc240 | 61 | // break; |
carlospomar | 4:71a955ddc240 | 62 | // } |
carlospomar | 4:71a955ddc240 | 63 | //} |
carlospomar | 1:591fea5f363b | 64 | |
carlospomar | 2:0ef1b1712e64 | 65 | void calculovpp () |
carlospomar | 2:0ef1b1712e64 | 66 | { |
carlospomar | 4:71a955ddc240 | 67 | for(contvpp=0; contvpp=99; contvpp++) { |
carlospomar | 2:0ef1b1712e64 | 68 | if (muestra(contvpp)>Vpmax) { |
carlospomar | 2:0ef1b1712e64 | 69 | Vpmax=muestra(contvpp); |
carlospomar | 2:0ef1b1712e64 | 70 | } else { |
carlospomar | 2:0ef1b1712e64 | 71 | if (muestra(contvpp)<Vpmin) { |
carlospomar | 2:0ef1b1712e64 | 72 | Vpmin=muestra(contvpp); |
carlospomar | 2:0ef1b1712e64 | 73 | } |
carlospomar | 2:0ef1b1712e64 | 74 | } |
carlospomar | 4:71a955ddc240 | 75 | else { |
carlospomar | 4:71a955ddc240 | 76 | if(!flag3) { |
carlospomar | 4:71a955ddc240 | 77 | Vpp = Vpmax-Vpmin; |
carlospomar | 4:71a955ddc240 | 78 | flag3=!flag3; |
carlospomar | 4:71a955ddc240 | 79 | } |
carlospomar | 4:71a955ddc240 | 80 | } |
carlospomar | 4:71a955ddc240 | 81 | } |
carlospomar | 2:0ef1b1712e64 | 82 | } |
carlospomar | 2:0ef1b1712e64 | 83 | |
carlospomar | 3:30f1e2f8308c | 84 | void calculovrms () |
carlospomar | 3:30f1e2f8308c | 85 | { |
carlospomar | 4:71a955ddc240 | 86 | for (contvrms=0; contvrms=99; contvrms++) { |
carlospomar | 4:71a955ddc240 | 87 | valor = muestra(contvrms); |
carlospomar | 4:71a955ddc240 | 88 | valor = valor*valor; |
carlospomar | 4:71a955ddc240 | 89 | sumatorio = sumatorio + valor; |
carlospomar | 3:30f1e2f8308c | 90 | } |
carlospomar | 4:71a955ddc240 | 91 | Vrms = (constante*sumatorio)^(0.5); |
carlospomar | 4:71a955ddc240 | 92 | } |
carlospomar | 2:0ef1b1712e64 | 93 | |
carlospomar | 1:591fea5f363b | 94 | int main() |
carlospomar | 1:591fea5f363b | 95 | { |
carlospomar | 1:591fea5f363b | 96 | muestreo.attach_us (&temporizador,200); |
carlospomar | 1:591fea5f363b | 97 | visualizar.attach (&mostrar, 1); |
carlospomar | 1:591fea5f363b | 98 | Sw.rise(&boton); |
carlospomar | 1:591fea5f363b | 99 | |
carlospomar | 1:591fea5f363b | 100 | //printf("pwm set to %.2f %%\n", mypwm.read() * 100); |
carlospomar | 1:591fea5f363b | 101 | |
carlospomar | 1:591fea5f363b | 102 | while(1) { |
carlospomar | 4:71a955ddc240 | 103 | if (flag4) { |
carlospomar | 4:71a955ddc240 | 104 | valor=0; |
carlospomar | 4:71a955ddc240 | 105 | sumatorio=0; |
carlospomar | 4:71a955ddc240 | 106 | |
carlospomar | 2:0ef1b1712e64 | 107 | flag3=0; |
carlospomar | 4:71a955ddc240 | 108 | for (contm=0; contm=99: contm++) { |
carlospomar | 2:0ef1b1712e64 | 109 | if (flag1==1) { |
carlospomar | 1:591fea5f363b | 110 | muestra=buffer1[contm]; |
carlospomar | 1:591fea5f363b | 111 | } else { |
carlospomar | 1:591fea5f363b | 112 | muestra=buffer2[contm]; |
carlospomar | 1:591fea5f363b | 113 | } |
carlospomar | 1:591fea5f363b | 114 | } |
carlospomar | 1:591fea5f363b | 115 | } |
carlospomar | 1:591fea5f363b | 116 | |
carlospomar | 1:591fea5f363b | 117 | } |
carlospomar | 1:591fea5f363b | 118 | } |