Atope
/
PRACTICA3
ccvcv
Fork of PRACTICA3 by
main.cpp@3:30f1e2f8308c, 2017-11-10 (annotated)
- Committer:
- carlospomar
- Date:
- Fri Nov 10 12:54:55 2017 +0000
- Revision:
- 3:30f1e2f8308c
- Parent:
- 2:0ef1b1712e64
- Child:
- 4:71a955ddc240
practica 3
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 | 1:591fea5f363b | 7 | //TextLCD (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 bufferlleno=0; // variable de estado |
carlospomar | 2:0ef1b1712e64 | 17 | int flag1; // variable para indicar cuando se tiene que cambiar de buffer |
carlospomar | 2:0ef1b1712e64 | 18 | int flag2; // variable para indicar cuando se tiene que |
carlospomar | 2:0ef1b1712e64 | 19 | int flag3; // variable para indicar cuando se tiene que calcular Vpp |
carlospomar | 3:30f1e2f8308c | 20 | int Vpmax=0; // variable para guardar el valor del pico superior |
carlospomar | 3:30f1e2f8308c | 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 | 1:591fea5f363b | 52 | void LCD() |
carlospomar | 1:591fea5f363b | 53 | { |
carlospomar | 1:591fea5f363b | 54 | lcd.cls(); |
carlospomar | 1:591fea5f363b | 55 | switch (dato) { |
carlospomar | 1:591fea5f363b | 56 | case 0; |
carlospomar | 3:30f1e2f8308c | 57 | lcdprintf("Vrms: %n V",Vrms); //Vrms :\n%3.3f V,Vrms |
carlospomar | 1:591fea5f363b | 58 | break; |
carlospomar | 1:591fea5f363b | 59 | case 1; |
carlospomar | 3:30f1e2f8308c | 60 | lcdprintf("Vpp: %n V",Vpp); // |
carlospomar | 1:591fea5f363b | 61 | break; |
carlospomar | 1:591fea5f363b | 62 | } |
carlospomar | 1:591fea5f363b | 63 | } |
carlospomar | 1:591fea5f363b | 64 | |
carlospomar | 2:0ef1b1712e64 | 65 | void calculovpp () |
carlospomar | 2:0ef1b1712e64 | 66 | { |
carlospomar | 2:0ef1b1712e64 | 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 | } else { |
carlospomar | 2:0ef1b1712e64 | 74 | if(!flag3) { |
carlospomar | 2:0ef1b1712e64 | 75 | Vpp = Vpmax-Vpmin; |
carlospomar | 2:0ef1b1712e64 | 76 | flag3=!flag3; |
carlospomar | 2:0ef1b1712e64 | 77 | } |
carlospomar | 2:0ef1b1712e64 | 78 | } |
carlospomar | 2:0ef1b1712e64 | 79 | } |
carlospomar | 2:0ef1b1712e64 | 80 | } |
carlospomar | 2:0ef1b1712e64 | 81 | |
carlospomar | 3:30f1e2f8308c | 82 | void calculovrms () |
carlospomar | 3:30f1e2f8308c | 83 | { |
carlospomar | 3:30f1e2f8308c | 84 | for (contvrms=0; contvrms=99; contvrms++) |
carlospomar | 3:30f1e2f8308c | 85 | {valor = muestra(contvrms); |
carlospomar | 3:30f1e2f8308c | 86 | valor = valor*valor; |
carlospomar | 3:30f1e2f8308c | 87 | sumatorio = sumatorio + valor;} |
carlospomar | 3:30f1e2f8308c | 88 | Vrms = (constante*sumatorio)^(0.5); |
carlospomar | 3:30f1e2f8308c | 89 | } |
carlospomar | 2:0ef1b1712e64 | 90 | |
carlospomar | 1:591fea5f363b | 91 | int main() |
carlospomar | 1:591fea5f363b | 92 | { |
carlospomar | 1:591fea5f363b | 93 | muestreo.attach_us (&temporizador,200); |
carlospomar | 1:591fea5f363b | 94 | visualizar.attach (&mostrar, 1); |
carlospomar | 1:591fea5f363b | 95 | Sw.rise(&boton); |
carlospomar | 1:591fea5f363b | 96 | |
carlospomar | 1:591fea5f363b | 97 | //printf("pwm set to %.2f %%\n", mypwm.read() * 100); |
carlospomar | 1:591fea5f363b | 98 | |
carlospomar | 1:591fea5f363b | 99 | while(1) { |
carlospomar | 1:591fea5f363b | 100 | if (bufferlleno) { |
carlospomar | 1:591fea5f363b | 101 | suma=0; |
carlospomar | 2:0ef1b1712e64 | 102 | flag3=0; |
carlospomar | 1:591fea5f363b | 103 | for (contm=0; contm<100: contm++) { |
carlospomar | 2:0ef1b1712e64 | 104 | if (flag1==1) { |
carlospomar | 1:591fea5f363b | 105 | muestra=buffer1[contm]; |
carlospomar | 1:591fea5f363b | 106 | } else { |
carlospomar | 1:591fea5f363b | 107 | muestra=buffer2[contm]; |
carlospomar | 1:591fea5f363b | 108 | } |
carlospomar | 1:591fea5f363b | 109 | } |
carlospomar | 1:591fea5f363b | 110 | } |
carlospomar | 1:591fea5f363b | 111 | |
carlospomar | 1:591fea5f363b | 112 | } |
carlospomar | 1:591fea5f363b | 113 | } |