Capteur_US

Dependencies:   mbed DRV8825

debug.cpp

Committer:
Nanaud
Date:
2020-07-08
Revision:
1:2fe8c402ee79
Parent:
0:dc036b67c87c
Child:
2:094c09903a9c

File content as of revision 1:2fe8c402ee79:

// Nom du fichier : debug.cpp
#include "pins.h"

// Variables globales & timerse
Serial pc(USBTX, USBRX);
Ticker ticker_affUS;
Ticker ticker_affcd;
bool aff_US[6];
bool aff_cd[4];

void serialIT(){
    //pc.printf("\n\rserialIT on\n\r");
    static int i=0;
    static char buffer[10]=""; // Tableau qui contient la chaine de caractère rentrée dans le terminal.
    static char cmd[Lcmd]=""; // Variable qui retient que les premiers caractères qui représentent la commande.
    char tampon = pc.getc();
    
    if((tampon >= 48 && tampon <=57) || (tampon>=97 && tampon<=122) || tampon==13)
    {
        buffer[i]=tampon; // Ajout du caractère dans le tableau buffer
        pc.putc(buffer[i]); // Réécriture sur le terminal du caractère envoyé
        i++;
    }

    if(buffer[i-1]=='\r'){ // Attente un appui sur la touche entrée
        i=0;
        copieTab(buffer,cmd); // Sauvegarde la commande dans le tableau cmd
        cmdChoice(cmd); 
    }  
}

void copieTab(char *tab1,char *tab2){ // Fonction qui recopie un tableau dans un autre
    //pc.printf("\n\rcopieTab on\n\r");
    //pc.printf("\n\r");
    for(int j=0;j<Lcmd;j++){
        tab2[j]=tab1[j];
        //pc.printf("%c",tab2[j]);
    }
    //pc.printf("\n\r");
}

void cmdChoice(char *cmd){ // Fonction qui permet de choisir de l'activation d'une commande
    //pc.printf("\n\rcmdChoice on\n\rcmd =");
    
    const char *options[]={
    "help", //0
    "usao", //1
    "us1o", //2
    "us2o", //3
    "us3o", //4
    "us4o", //5
    "us5o", //6
    "us6o", //7
    "tdrv", //8
    "cdon", //9
    "cdga", //10
    "cdgb", //11
    0
    };
    
    long option=-1;
    
    for (long a=0; options[a] && option<0; a++){
        if (!strcmp(cmd,options[a]) || strcmp(cmd,options[a])==1){ // strcmp(cmd,options[a])==1 permet de contourner le problème, à revoir !!!
            option=a;
        }
        //pc.printf("res = %d",strcmp(cmd,options[a]));
    }
            
    switch (option) {
        case 0:     //help
            pc.printf("\n\n\r###HELP###\n\r");
            pc.printf("usao : Affichage resultats capteurs a ultrasons\n\r");
            pc.printf("usxo : Affichage resultat capteur ultrasons x\n\r");
            pc.printf("tdrv : Lance la fonction test_drv()\n\r");
            pc.printf("cdon : Affichage resultats codeurs\n\r");
            pc.printf("cdgx : Affichage resultats codeur gauche phase x (a ou b)\n\r");
            pc.printf("\n\r");
            break;
        case 1:     //usao
            pc.printf("Capt US ALL ON/OFF\n\r");
            aff_US[0]=!aff_US[0];aff_US[1]=!aff_US[1];aff_US[2]=!aff_US[2];
            aff_US[3]=!aff_US[3];aff_US[4]=!aff_US[4];aff_US[5]=!aff_US[5];
            break;
        case 2:     //us1o
            pc.printf("Capt US 1 ON/OFF\n\r");
            aff_US[0]=!aff_US[0];
            break;
        case 3:     //us2o
            pc.printf("Capt US 2 ON/OFF\n\r");
            aff_US[1]=!aff_US[1];
            break;
        case 4:     //us3o
            pc.printf("Capt US 3 ON/OFF\n\r");
            aff_US[2]=!aff_US[2];
            break;
        case 5:     //us4o
            pc.printf("Capt US 4 ON/OFF\n\r");
            aff_US[3]=!aff_US[3];
            break;
        case 6:     //us5o
            pc.printf("Capt US 5 ON/OFF\n\r");
            aff_US[4]=!aff_US[4];
            break;
        case 7:     //us6o
            pc.printf("Capt US 6 ON/OFF\n\r");
            aff_US[5]=!aff_US[5];
            break;
        case 8:     //tdrv
            pc.printf("Fonction test_drv()\n\r");
            test_drv();
            break;
        case 9:     //cdon
            pc.printf("Results ALL Encoders ON/OFF\n\r");
            aff_cd[0]=!aff_cd[0];
            aff_cd[1]=!aff_cd[1];
            break;
        case 10:    //cdga
            pc.printf("Results Encoder Left A ON/OFF\n\r");
            aff_cd[0]=!aff_cd[0];
            break;
        case 11:    //cdgb
            pc.printf("Results Encoder Left B ON/OFF\n\r");
            aff_cd[1]=!aff_cd[1];
            break;
        default:
            pc.printf("Commande invalide\n\r");
    }
}

void affUltrasons(){
    if(aff_US[0]) printf("Tps US1 = %5.0f uS\n\r", us_out[0]); 
    if(aff_US[1]) printf("Tps US2 = %5.0f uS\n\r", us_out[1]); 
    if(aff_US[2]) printf("Tps US3 = %5.0f uS\n\r", us_out[2]); 
    if(aff_US[3]) printf("Tps US4 = %5.0f uS\n\r", us_out[3]); 
    if(aff_US[4]) printf("Tps US5 = %5.0f uS\n\r", us_out[4]); 
    if(aff_US[5]) printf("Tps US6 = %5.0f uS\n\r", us_out[5]);
    if(aff_US[0]||aff_US[1]||aff_US[2]||aff_US[3]||aff_US[4]||aff_US[5]) printf("\n\r"); 
}

void affCodeurs(){
    if(aff_cd[0]) printf("CdgA = %d\n\r", cpt_cdgA);   
    if(aff_cd[1]) printf("CdgB = %d\n\r", cpt_cdgB); 
}