test

Dependencies:   mbed

main.cpp

Committer:
laik777
Date:
2018-12-10
Revision:
1:ceefb922cff9
Parent:
0:43c630791109
Child:
2:549286fb28d4

File content as of revision 1:ceefb922cff9:

#include "mbed.h"

//indikacija rgb
#define OFF         0
#define ON          1

DigitalOut myled_blue(p16);
DigitalOut myled_green(p30);
DigitalOut myled_red(p15);

DigitalIn start1(p11); 
DigitalIn start2(p12); 
DigitalIn start3(p13); 
DigitalIn start4(p10); 

//timerji
Timer timerProgram;

//nastavitev pwm signalov
PwmOut pwm1 (p21);            //
PwmOut pwm2(p22);

//dodano za merjenje toka in napetosti
//def analogno merjenje nap in toka
AnalogIn measVol (p17);
AnalogIn measCurrG (p18);
AnalogIn measCurrH(p19);
float voltageMeas = 0.0;
float voltageCalc = 0.0;
float currentMeasG = 0.0;
float currentCalcG = 0.0;
float currentMeasH = 0.0;
float currentCalcH = 0.0;

//funkcija za nastavljanje baudrate pri serijski komunikaciji na PC
void baud(int baudrate)
{
    Serial s(USBTX, USBRX);
    s.baud(baudrate);
}

void merjenjeTokaInNapetosti() {
    
    printf ("\r\n");
    printf ("<------- \r\n");
    printf ("Measurement: \r\n");
    DigitalOut pwmGD (p21);
    DigitalOut pwmHD (p22);
    pwmGD = 1;
    pwmHD = 1;
    
    wait(0.1); 

    voltageMeas = measVol.read();
    voltageMeas *= 3.3;
    voltageCalc = voltageMeas * 9.15; //8.2

    currentMeasG = measCurrG.read();
    currentMeasG *= 3.3;
    currentCalcG = currentMeasG * 1.259;

    currentMeasH = measCurrH.read();
    currentMeasH *= 3.3;
    currentCalcH = currentMeasH * 1.279;  
    wait(0.1);   

    printf("Voltage: %f V\r\n", voltageCalc);
    printf("Current1: %f A\r\n", currentCalcG);
    printf("Current2: %f A\r\n", currentCalcH);
    printf ("-------> \r\n");

    pwmGD = 0;
    pwmHD = 0;

    }



int main() 
{
    //hitrost serijske komunikacije
    baud(115200);
    
    while(1)
    {
        myled_blue  = OFF;
        myled_green  = OFF;
        myled_red  = OFF;
        
        if(start1 == 0)
        {
            myled_blue  = ON;
            merjenjeTokaInNapetosti();
            wait(2);          
        }
        
        else if(start2 == 0)
        {
            myled_green  = ON;
            printf ("\r\n");
            printf ("<------- \r\n");
            
            //merjenjeTokaInNapetosti();
            
            //nastavitev pwm period
            pwm1.period_ms(100);
            pwm2.period_ms(100);
            
            pwm1=0;
            pwm2=0;
            
            printf ("Start \r\n");
            printf("pwm1 read: %f\n\r",pwm1.read()); 
            printf("pwm2 read: %f\n\r",pwm2.read()); 
            
            //printf ("\r\n");
            
            //printf("pwm1 read: %f\n\r",pwm1.read()*100); 
            
            //izvajanje krmilja
            printf ("PWM set \r\n");
            
            pwm1.pulsewidth_ms(20);
            
            printf("pwm1 read: %f\n\r",pwm1.read()); 
            printf("pwm2 read: %f\n\r",pwm2.read()); 
            wait(0.1);
            
            printf ("PWM set \r\n");
            pwm1.pulsewidth_ms(60);
            
            printf("pwm1 read: %f\n\r",pwm1.read()); 
            printf("pwm2 read: %f\n\r",pwm2.read()); 
            wait(0.2);
            printf ("PWM off \r\n");
            pwm1 = 0;
            pwm2 = 0;
            
            
            printf("pwm1 read: %f\n\r",pwm1.read()); 
            printf("pwm2 read: %f\n\r",pwm2.read()); 
            printf ("End \r\n");
            printf ("-------> \r\n");
            wait(2);
            myled_green  = OFF;   
        }
                
        else if(start3 == 0)
        {
            myled_red  = ON;
            wait(2);           
        }
        
        else if(start4 == 0)
        {
            myled_blue  = ON; 
            myled_red  = ON;  
            myled_green  = ON;
            wait(2);         
        }
        
    }
}