luiz fischer / Mbed 2 deprecated T6_CD_parte2

Dependencies:   mbed

main.cpp

Committer:
nlfischer
Date:
2018-01-05
Revision:
0:dd4331d7abaf

File content as of revision 0:dd4331d7abaf:

#include "mbed.h"

Ticker aciona_interrupcao;

Serial pc(SERIAL_TX, SERIAL_RX, 115200);

AnalogIn tensao_entrada(A4);
AnalogIn tensao_saida(A5);

PwmOut pwm(D5);

DigitalOut carga(PB_5);

static int interrupt = 1, k=0, periodo_pwm = 1, tam = 500;
float tempo = 0.001;

    
float le_tensao_vout(){
    return tensao_saida.read()*3.3;
    }


void imprime_dados(float u, float vout){
    pc.printf("\n%d", k);    
    pc.printf("     ");
    pc.printf("%f", u);    
    pc.printf("     ");  
    pc.printf("%f", vout);  
}

void interrupcao(){
    interrupt = 1;
    k=k+1;
}

void fim(){   
    pc.printf("];");
    pc.printf("\nfigure(1)");
    pc.printf("\nsubplot(2,1,1)");
    pc.printf("\nstairs(dados(:,3),'k')");    
    pc.printf("\ngrid on");
    pc.printf("\nylabel('saida')");
    pc.printf("\nsubplot(2,1,2)");    
    pc.printf("\nstairs(dados(:,2))");
    pc.printf("\ngrid on");
    pc.printf("\nsave dados_degrau dados");
    pc.printf("\nylabel('entrada')\n\n");
    
    pwm.pulsewidth_us(1);
      
    while(1){ 
      
    }  
}


int main() {
    int i = 0;
    float vin=0.0,vout=0.0, u=0.0;
    
    
    aciona_interrupcao.attach(&interrupcao, 0.03);
    
    pwm.period_ms(periodo_pwm);
    
    pc.printf("%% Inicio do programa");  
    pc.printf("\nclear all; clc;");  
    pc.printf("\ndados = [");  
    
    while(1){
        
    if(interrupt) {
        
        if(k>50){
        u = 3.3;
        pwm.pulsewidth_us(1000);        
        }
        imprime_dados(u, le_tensao_vout());
        
        
        interrupt = 0;
        
        if(k==tam-1) fim();
            
      
    }
    

}
}