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