ccvcv

Dependencies:   TextLCD mbed

Fork of PRACTICA3 by compartido

main.cpp

Committer:
carlospomar
Date:
2017-11-10
Revision:
4:71a955ddc240
Parent:
3:30f1e2f8308c
Child:
5:18feff1607c9

File content as of revision 4:71a955ddc240:

#include "mbed.h"
#include "TextLCD.h"

#define constante (3,3^2)/((2^16)-1)*100) // valor constante para el cálculo de Vrms
#define vector 100      // valor para definir el tamaño de los búfferes de muestreo

//TextLCD lcd(6 puertos, TextLCD::LCD16x2); rs,e,d4-d7
InterruptIn Sw ();      //pulsador en el puerto
AnalogIn leer ();       // leer del puerto
Ticker muestreo;
Ticker visualizar;
int contt=0;
int contm=0;
int contvpp=0;
int dato=0,             // variable para seleccionar el dato a mostrar
int flag1;              // variable para indicar cuando se tiene que cambiar de buffer
int flag2;              // variable para indicar cuando se tiene que
int flag3;              // variable para indicar cuando se tiene que calcular Vpp
int flag4;              // variable para indicar cuando se llena el buffer
int Vpmax=0;            // variable para guardar el valor del pico superior
int Vpmin=0;            // variable para guardar el valor del pico inferior
int Vpp=0;
float buffer1 [vector]; // buffer de muestreo 1 de tamaño 100
float buffer2 [vector]; // buffer de muestreo 2 de tamaño 100
float Vrms;             // variabla para guardar el valor de RMS
float valor;
float sumatorio;        // variable que es la suma de los valores de la muestra
float muestra;          // variabla para hacer las operaciones


//void temporizador ()
//{
//    if (flag2) {
//
//    }
//    contt++;
//    if (contt==100) {
//        contt =0;
//        flag2 =!flag2;
//        bufferlleno=0;
//    }
//}

void boton()
{
    dato++;
    if (dato>1) {
        dato = 0;
    }
}

//void LCD()
//{
//    lcd.cls();
//    switch (dato) {
//        case 0:
//            lcdprintf("Vrms: %n V",Vrms); //Vrms :\n%3.3f V,Vrms
//            break;
//        case 1:
//            lcdprintf("Vpp: %n V",Vpp); //
//            break;
//    }
//}

void calculovpp ()
{
    for(contvpp=0; contvpp=99; contvpp++) {
        if (muestra(contvpp)>Vpmax) {
            Vpmax=muestra(contvpp);
        } else {
            if (muestra(contvpp)<Vpmin) {
                Vpmin=muestra(contvpp);
            }
        }
        else {
            if(!flag3) {
                Vpp = Vpmax-Vpmin;
                flag3=!flag3;
            }
        }
    }
}

void calculovrms ()
{
    for (contvrms=0; contvrms=99; contvrms++) {
        valor = muestra(contvrms);
        valor = valor*valor;
        sumatorio = sumatorio + valor;
    }
    Vrms = (constante*sumatorio)^(0.5);
}

int main()
{
    muestreo.attach_us (&temporizador,200);
    visualizar.attach (&mostrar, 1);
    Sw.rise(&boton);

    //printf("pwm set to %.2f %%\n", mypwm.read() * 100);

    while(1) {
        if (flag4) {
            valor=0;
            sumatorio=0;

            flag3=0;
for (contm=0; contm=99: contm++) {
                if (flag1==1) {
                    muestra=buffer1[contm];
                } else {
                    muestra=buffer2[contm];
                }
            }
        }

    }
}