ccvcv

Dependencies:   TextLCD mbed

Fork of PRACTICA3 by compartido

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?

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