ccvcv

Dependencies:   TextLCD mbed

Fork of PRACTICA3 by compartido

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?

UserRevisionLine numberNew 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 }