PROYECTO FINAL CAMBIO DE PANTALLAS EN LCD CON INTERRUPCIONES

Dependencies:   mbed MEDIDORCORRIENTEVOLTAJEYPOTENCIA

main.cpp

Committer:
dibbrowing
Date:
2020-02-15
Revision:
1:33b50d1fb58c
Parent:
0:231de6a0410e

File content as of revision 1:33b50d1fb58c:

#include "mbed.h"
#include "TextLCD.h"
InterruptIn P1(PA_0);
InterruptIn P2(PA_4);
InterruptIn P3(PA_5);
DigitalOut L1(PD_12);
DigitalOut L2(PD_13);
DigitalOut L3(PD_14);
DigitalOut L4(PD_15);
Serial pc(PA_2,PA_3);
I2C i2c_lcd(PB_7, PB_8); // SDA, SCL
TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD20x4);

////////ENTRADAS ANALOGICAS
AnalogIn IFASE1(PB_0);
AnalogIn IFASE2(PB_1);
AnalogIn IFASE3(PC_5);
AnalogIn VFASE1_2(PC_0);
AnalogIn VFASE2_3(PA_7);
AnalogIn VFASE3_1(PC_4);
float valor_IFASE1=0;
float valor_IFASE2=0;
float valor_IFASE3=0;
float valor_VFASE1_2=0;
float valor_VFASE2_3=0;
float valor_VFASE3_1=0;
bool vP1=0;
bool vP2=0;
bool vP3=0;
bool vP4=0;
////ESTRUCTURA

void pantcurr(void)
{
    L1.write(1);
    L2.write(0);
    L3.write(0);
    L4.write(0);
}

void pantvolt(void)
{
    L1.write(0);
    L2.write(1);
    L3.write(0);
    L4.write(0);
}

void pantpow(void)
{
    L1.write(0);
    L2.write(0);
    L3.write(1);
    L4.write(0);
}
void pantprinc(void)
{
    L1.write(0);
    L2.write(0);
    L3.write(0);
    L4.write(1);
}


int main()
{
        P1.rise(&pantcurr);
        P2.rise(&pantvolt);
        P3.rise(&pantpow);
        P1.fall(&pantprinc);
        while(true) {
        pc.baud(115200);
        valor_IFASE1=IFASE1.read();
        valor_IFASE2=IFASE2.read();
        valor_IFASE3=IFASE3.read();
        valor_VFASE1_2=VFASE1_2.read();
        valor_VFASE2_3=VFASE2_3.read();
        valor_VFASE3_1=VFASE3_1.read();
        vP1=L1.read();
        vP2=L2.read();
        vP3=L3.read();
        vP4=L4.read();
        lcd.setBacklight(TextLCD::LightOn);
        lcd.setCursor(TextLCD::CurOff_BlkOff);
        if(vP1==1) {
            lcd.cls();
            const char* text = "CORRIENTES DE FASE";
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf(text);
            lcd.locate(0,2);
            lcd.printf("IA%2.1f%", valor_IFASE1*20);
            lcd.locate(7,2);
            lcd.printf("IB%2.1f%", valor_IFASE2*20);
            lcd.locate(14,2);
            lcd.printf("IC%2.1f%", valor_IFASE3*20);
            wait(0.5);
        }
        if(vP2==1) {
            lcd.cls();
            const char* text = "VOLTAJES LINEA LINEA";
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf(text);
            lcd.locate(0,2);
            lcd.printf("V1=%1.0f%", valor_VFASE1_2*480);
            lcd.locate(7,2);
            lcd.printf("V2=%1.0f%", valor_VFASE2_3*480);
            lcd.locate(14,2);
            lcd.printf("V3=%1.0f%", valor_VFASE3_1*480);
            L2.write(1);
            wait(0.5);
        }
        if(vP3==1) {
            lcd.cls();
            const char* text = "POTENCIAS POR FASE";
            lcd.cls();
            lcd.locate(1,0);
            lcd.printf(text);
            lcd.locate(0,2);
            lcd.printf("P1=%1.1f%", (((valor_IFASE1*20)*(valor_VFASE1_2*480)))/1000);
            lcd.locate(7,2);
            lcd.printf("P2=%1.1f%", (((valor_IFASE2*20)*(valor_VFASE2_3*480)))/1000);
            lcd.locate(14,2);
            lcd.printf("P3=%1.1f%", (((valor_IFASE3*20)*(valor_VFASE3_1*480)))/1000);
            wait(0.5);
        }
        if(vP4==1) {
            const char* text = "PROYECTO FINAL";
            const char* text1 = "MAESTRIA ELECTRONICA";
            const char* text2 = "DAVID BALDEON";
            lcd.cls();
            lcd.locate(3,0);
            lcd.printf(text);
            lcd.locate(0,2);
            lcd.printf(text1);
            lcd.locate(4,3);
            lcd.printf(text2);
            wait(0.5);
        }
        

    }
}