VMA306 Library HelloWorld program

Dependencies:   mbed VMA306

main.cpp

Committer:
haarkon
Date:
2018-05-31
Revision:
0:9afd9068bcc9
Child:
1:dde51c1d6477

File content as of revision 0:9afd9068bcc9:

#include "mbed.h"

Serial      pc          (PA_2, PA_3, 921600);

Ticker      _tick;
Timer       _tim;

DigitalOut  _trig1  (PB_15);
DigitalOut  _trig2  (PB_14);
DigitalOut  _trig3  (PB_13);

InterruptIn _echo1  (PA_6);
InterruptIn _echo2  (PC_7);
InterruptIn _echo3  (PB_2);

DigitalOut  led1        (PA_5);
DigitalOut  led2        (PD_2);
DigitalOut  disquette   (PA_12);


int     start1, start2, start3, FlagMes = 0;;
double  dist1, dist2, dist3;

void monte1 (void)
{
    start1 = _tim.read_us();
    //pc.printf("\n\rE1_ON");
}

void monte2 (void)
{
    start2 = _tim.read_us();
    //pc.printf("\n\rE2_ON");
}

void monte3 (void)
{
    start3 = _tim.read_us();
    //pc.printf("\n\rE3_ON");
}

void tombe1 (void)
{
    dist1 = (double)(_tim.read_us() - start1)/58.0;
    if (dist1 > 500) dist1 = 500;
    //pc.printf("\n\rE1_OFF");
}

void tombe2 (void)
{
    dist2 = (double)(_tim.read_us() - start2)/58.0;
    if (dist2 > 500) dist1 = 500;
    //pc.printf("\n\rE2_OFF");
}

void tombe3 (void)
{
    dist3 = (double)(_tim.read_us() - start3)/58.0;
    if (dist3 > 500) dist1 = 500;
    FlagMes = 1;
    //pc.printf("\n\rE3_OFF");
}

void picko (void)
{
    static int etape = 1;
    //pc.printf ("\n\rpick : %d",etape);
    switch(etape) {
        case 1:
            _trig1 = 1;
            wait_us(20);
            _trig1 = 0;
            etape = 2;
            break;

        case 2:
            _trig2 = 1;
            wait_us(20);
            _trig2 = 0;
            etape = 3;
            break;

        case 3:
            _trig3 = 1;
            wait_us(20);
            _trig3 = 0;
            etape = 1;
            break;
    }
}

int main()
{
    _tim.start();

    _echo1.rise (&monte1);
    _echo2.rise (&monte2);
    _echo3.rise (&monte3);

    _echo1.fall (&tombe1);
    _echo2.fall (&tombe2);
    _echo3.fall (&tombe3);

    _tick.attach (&picko, 0.05);

    led1 = 1;
    led2 = 0;
    disquette = 0;

    while(1) {
        if (FlagMes) {
            FlagMes = 0;
            pc.printf("\rG = %5.2lf - B = %5.2lf - D = %5.2lf", dist1, dist2, dist3);
            led1 = !led1;
            led2 = !led2;
        }
    }
}