AresENSEA-CDF2020 / Mbed 2 deprecated AresCDFMainCode

Dependencies:   mbed DRV8825

captUS.cpp

Committer:
Nanaud
Date:
2020-10-25
Revision:
21:e5f0f5abb5ae
Parent:
20:7d206773f39e
Child:
22:f891c2bce091

File content as of revision 21:e5f0f5abb5ae:

//Nom du fichier : captUS.cpp
#include "pins.h"
const float DISTLIM = 450; //160

// Variables globales & timers
double us_high[6]={0};
double us_low[6]={0};
double us_diff[6]={0};
bool us_verif[6]={0};

double distt[6];
Timer tps;
Ticker ticker_US;
bool rebooted = 0;
bool wtt = 0;

//int sptt = 0;

/*
void captUS_init()
{
    ::distance = new double(6); //équivalent au malloc()
    tps.reset();
    tps.start();
}
*/

void captUS_trig()
{
    convertToDistance();

    if((objRecule[indice]==0) && (fnc == 2)) {
        if ((distt[5] >= DISTLIM) && (distt[0] >= DISTLIM)  && (distt[1] >= DISTLIM)) {
            wtt = 1;
        }

        else {
            mot_dis();
            rebooted = 1;
            wtt=0;
        }
    }

    else if((objRecule[indice]==1) && (fnc == 2)) {
        if ((distt[2] >= DISTLIM) && (distt[3] >= DISTLIM) && (distt[4] >= DISTLIM)) {
            wtt=1;
        }

        else {
            mot_dis();
            rebooted = 1;
            wtt=0;
        }
    }

    /*
    pc.printf("US1 = %5.0lf uS\n\r", us_out[0]);
    pc.printf("US2 = %5.0lf uS\n\r", us_out[1]);
    //pc.printf("US3 = %5.0lf uS\n\r", us_out[2]);
    //pc.printf("US4 = %5.0lf uS\n\r", us_out[3]);
    //pc.printf("US5 = %5.0lf uS\n\r", us_out[4]);
    pc.printf("US6 = %5.0lf uS\n\r", us_out[5]);
    pc.printf("\n\r");
    */

    /*
    pc.printf("Dist1 = %5.0lf mm\n\r", ::distance[0]);
    pc.printf("Dist2 = %5.0lf mm\n\r", ::distance[1]);
    pc.printf("Dist3 = %5.0lf mm\n\r", ::distance[2]);
    pc.printf("Dist4 = %5.0lf mm\n\r", ::distance[3]);
    pc.printf("Dist5 = %5.0lf mm\n\r", ::distance[4]);
    pc.printf("Dist6 = %5.0lf mm\n\r", ::distance[5]);
    pc.printf("\n\r");
    */

    tps.reset();
    trigger=1;
    wait(0.00002);
    trigger=0;
}

void echoRise1()
{
    if(us_verif[0] == 0) {
        us_high[0]=tps.read_us();
        us_verif[0] = 1;
    }
}

void echoFall1()
{
    if(us_verif[0] == 1) {
        us_low[0]=tps.read_us();
        us_diff[0]=us_low[0]-us_high[0];
        us_verif[0] = 0;
    }
}

void echoRise2()
{
    if(us_verif[1] == 0) {
        us_high[1]=tps.read_us();
        us_verif[1] = 1;
    }
}

void echoFall2()
{
    if(us_verif[1] == 1) {
        us_low[1]=tps.read_us();
        us_diff[1]=us_low[1]-us_high[1];
        us_verif[1] = 0;
    }
}

void echoRise3()
{
    if(us_verif[2] == 0) {
        us_high[2]=tps.read_us();
        us_verif[2] = 1;
    }
}

void echoFall3()
{
    if(us_verif[2] == 1) {
        us_low[2]=tps.read_us();
        us_diff[2]=us_low[2]-us_high[2];
        us_verif[2] = 0;
    }
}

void echoRise4()
{
    if(us_verif[3] == 0) {
        us_high[3]=tps.read_us();
        us_verif[3] = 1;
    }
}

void echoFall4()
{
    if(us_verif[3] == 1) {
        us_low[3]=tps.read_us();
        us_diff[3]=us_low[3]-us_high[3];
        us_verif[3] = 0;
    }
}

void echoRise5()
{
    if(us_verif[4] == 0) {
        us_high[4]=tps.read_us();
        us_verif[4] = 1;
    }
}

void echoFall5()
{
    if(us_verif[4] == 1) {
        us_low[4]=tps.read_us();
        us_diff[4]=us_low[4]-us_high[4];
        us_verif[4] = 0;
    }
}

void echoRise6()
{
    if(us_verif[5] == 0) {
        us_high[5]=tps.read_us();
        us_verif[5] = 1;
    }
}

void echoFall6()
{
    if(us_verif[5] == 1) {
        us_low[5]=tps.read_us();
        us_diff[5]=us_low[5]-us_high[5];
        us_verif[5] = 0;
    }
}


void convertToDistance()
{
    /**************************************
     * Nous convertisons grâce au valeur  *
     * qui sont retournées par echoRiseX  *
     * et echoFallx                       *
     **************************************/

    for(int i = 0; i<6; i++) {
        distt[i] = ((us_diff[i]*340)/1000); //conversion en distance(mm)
    }

    /****************************************
     * nous retournons l'adresse du tableau *
     ****************************************/
    //return ::distance;
}