Dependencies:   MODSERIAL mbed

main.cpp

Committer:
willem_hoitzing
Date:
2016-09-23
Revision:
0:735b8118a0c9
Child:
1:e1c1afc945f9

File content as of revision 0:735b8118a0c9:

#include "mbed.h"
#include "MODSERIAL.h"

PwmOut pwm_M1(D6);
DigitalOut dir_M1(D7);
//PwmOut pwm_M2(D5);
//DigitalOut dir_M2(D4);
MODSERIAL pc(USBTX, USBRX);
int cw = 0;
int ccw = 1;
char input;
volatile float float_pwm;
volatile bool bool_dir = false;

void input_u()
{
    if(pwm_M1 <= 0.95)
    {
        pwm_M1 = pwm_M1 + 0.05;
        float_pwm = float_pwm+0.05;
        pc.printf("Speed is set to: %f\n\r", float_pwm);
    }
    else
    {
        pwm_M1 = (1);
        float_pwm = 1;
        pc.printf("\nSpeed is maximum\r\n");
    }
}

void input_d()
{
    if(pwm_M1 >= 0.05)
    {
        pwm_M1 = (pwm_M1 - 0.05);
        float_pwm = float_pwm-0.05;
        pc.printf("Speed is set to: %f\n\r", float_pwm);
    }
    else
    {
        pwm_M1 = (0);
        float_pwm = 0;
        pc.printf("\nSpeed is minimum\r\n");
    }
}

void input_c()
{
    float pwm_original = pwm_M1;
    while(pwm_M1>0)
    {
        pwm_M1 = pwm_M1 - 0.1;
        wait(0.1);
    }
    dir_M1 = !dir_M1;
    while(pwm_M1 < pwm_original)
    {
        pwm_M1 = pwm_M1 + 0.1;
        wait(0.1);
    }
    bool_dir = !bool_dir;
    if(dir_M1 == cw)
    {
        pc.printf("\nDirection is set to: clockwise\r\n");
        
        pc.printf("\nDirection: %B\r\n", bool_dir);
    }
    else
    {
        pc.printf("\nDirection is set to: counter-clockwise\r\n");
        
        pc.printf("\nDirection: %B\r\n", bool_dir);
    }
}

int main()
{
    pc.baud(115200);
    pwm_M1 = (0.5);
    float_pwm = 0.5;
    dir_M1 = cw;
    for(;;){
    input = pc.getc();
    wait(0.01);
    switch(input)
    {
        case 'u':
        input_u();
        break;
        case 'd':
        input_d();
        break;
        case 'c':
        input_c();
        break;
        default:
        pc.printf("\nUnknown command\n\r");
    }
    }
}